Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati

Versione 4 del 26/11/2005 12.38.32

Nascondi questo messaggio

BR

Immagine(Icone/Piccole/warning.png,50,left)Questo documento richiede una revisione. Usatelo a vostro rischio. Si raccomanda di leggere l'intera guida prima di effettuare alcuna operazione.

BRQuesta guida al backup del sistema con tar è tratta da un post scritto da Heliode sul Forum Ubuntu. Questo è il thread originale della discussione: [http://www.ubuntuforums.org/showthread.php?t=35087]

Introduzione


Molti di voi probabilmente usavano Windows prima di iniziare ad usare Ubuntu. Prima o poi avrete avuto la necessità di fare il backup e ripristinare il sistema. In Windows queste operazioni richiedono software proprietario per il quale avrete dovuto riavviare il sistema e fare il boot in una sessione speciale in cui eseguire il back up o il ripristino (per esempio ciò avviene con programmi come Norton Ghost).

Sicuramente vi sarete chiesti per quale motivo non fosse possibile semplicemente salvare l'intera unità c:\ in un archivio *.zip. Ques'operazione è impossibile perchè in Windows ci sono molti files che non possono essere copiati o sovrascritti mentre sono in uso dal sistema, per questo motivo è necessario un software specifico per eseguire questa operazione.

E' evidente che questa caratteristica di Windows, come il continuo reboot, è una follia(tm). In Ubuntu non vi è alcuna necessità di usare programmi come Ghost per creare un backup dell'intero sistema (ciò avviene su ogni sistema Linux, peraltro). Del resto utilizzare Ghost su sistemi con formato diverso da ext2 sarebbe una pessima idea. Ext3, il formato standard delle partizioni Ubuntu, è considerato da Ghost come un formato ext2 difettoso e ciò può causare dei danni seri ai dati salvati su di esso.

Il Backup


"What should I use to backup my system then?" might you ask. Easy; the same thing you use to backup/compress everything else; TAR. Unlike Windows, Linux doesn't restrict root access to anything, so you can just throw every single file on a partition in a TAR file!

To do this, become root with

sudo su

and go to the root of your filesystem (we use this in our example, but you can go anywhere you want your backup to end up, including remote or removable drives.)

cd /

Now, below is the full command I would use to make a backup of my system:

tar -cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /

Now, lets explain this a little bit:

  • 'tar' is the program used to do a backup
  • c - create a new backup archive
  • v - verbose mode, tar will print what it's doing to the screen
  • p - preserve permissions, keeps all file permissions the same
  • z - compress the backup file with 'gzip' to make it smaller
  • f <filename> - specifies where to store the backup, /backup.tgz is the file used in this example

  • Now come the directories we want to exclude. We don't want to backup everything since some dirs aren't very useful to include. Also make sure you don't include the file itself, or else you'll get weird results. You might also not want to include the /mnt folder if you have other partitions mounted there or you'll end up backing those up too. Also make sure you don't have anything mounted in /media (i.e. don't have any cd's or removable media mounted). Either that or exclude /media.
  • After all of the options is the directory we want to backup. Since we want to backup everything we use / for the root directory

If you want to exclude all other filesystems you can use the 'l' option instead of --exclude. The above command would thus be:

tar -cvpzlf /backup.tgz --exclude=/lost+found --exclude=/backup.tgz /

EDIT: kvidell suggests on the forum thread that we also exclude the /dev directory. I have other evidence that says it is very unwise to do so though.

Well, if the command agrees with you, hit enter (or return, whatever) and sit back & relax. This might take a while.

Afterwards you'll have a file called backup.tgz, which is probably pretty large, in the root of your filesytem. Now you can burn it to DVD or move it to another machine; whatever you like!

attachment:IconsPage/IconWarning3.png WARNING: Files that are bigger than 2GB (a little less actually) are not supported by ISO9660 and may or may not be restorable. So don't simply burn a DVD with a huge .iso file on it. Split it up using the command split (see man page) or use a different way to get it onto the DVD. One possiblity (untested) is the following:

sudo tar --create --bzip2 --exclude /tmp --one-file-system --sparse / | growisofs -use-the-force-luke -Z /dev/hda=/proc/self/fd/0

Note that this only backs up one file system. You might want to use --exclude instead of --one-file-system to filter out the stuff you don't want backed up. This assumes your DVD drive is /dev/hda. This will not create a mountable DVD. To restore it you will reference the device file:

sudo tar --extract --bzip2 --file /dev/hda 

EDIT2: At the end of the process you might get a message along the lines of 'tar: Error exit delayed from previous errors' or something, but in most cases you can just ignore that.

Alternatively, you can use Bzip2 to compress your backup. This means higher compression but lower speed. If compression is important to you, just substitute the 'z' in the command with 'j', and give the backup the right extension. That would make the command look like this:

tar -cvpjf /backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys /

Backup attraverso la rete


If the filesystem is low on space and you can't mount another filesystem to store the backup file on it is possible to use netcat to trasfer the backup.

On the receiving end you'll setup netcat to write the backup file like this:

nc -l -p 1024 > backup.tar.bz2

Then you pipe the tar command without the 'f' flag through netcat on the sending end like this:

tar -cvpj <all those other options> / | nc -q 0 <receiving host> 1024

In the above commands 1024 is just a random portnumber, anything from 1024 and up should work.

If all goes well the backup will be piped through the network without touching the filesystem being read. With a really fast network this could actually be faster then writing the backup file back to disk.

A variation (which I just dreamed up, so I can't testify on its reliability) on the above is this command:

tar -cvpj <all those other options> / | ssh <remote host> "cat > backup.tar.bz2"

Ripristinare


attachment:IconsPage/IconWarning3.png Warning: Please, for goodness sake, be careful here. If you don't understand what you are doing here you might end up overwriting stuff that is important to you, so please take care!

Well continue with our example from the previous chapter which created the file backup.tgz in the root directory.

Once again, make sure you are root and that you and the backup file are in the root of the filesystem.

One of the beautiful things of Linux is that this will even work on a running system; no need to screw around with boot-cd's or anything. Of course, if you've rendered your system unbootable you might have no choice but to use a live cd but the results are the same. You can even remove every single file of a Linux system while it is running with one command. I'm not giving you that command though!

Well, back on-topic. This is the command that I would use:

tar -xvpzf /backup.tgz -C /

Or if you used bz2;

tar -xvpjf backup.tar.bz2 -C /

The x option tells tar to extract the file. The -C <directory> option tells tar to change to a specific directory ( / in this example ) before extracting.

attachment:IconsPage/IconWarning3.png WARNING: this will overwrite every single file on your partition with the one in the archive!

Just hit enter/return/your brother/whatever and watch the fireworks. Again, this might take a while. When it is done, you have a fully restored Ubuntu system! Just make sure that, before you do anything else, you re-create the directories were excluded ( /proc, /lost+found, /mnt, /sys, etc.).

mkdir /proc /lost+found /mnt /sys

And when you reboot, everything should be the way it was when you made the backup!

Ripristinare GRUB


Now, if you want to move your system to a new harddisk or if you did something nasty to your GRUB (like, say, install Windows), You'll also need to reinstall GRUB. There are several very good howto's on how to do that here on this forum, so i'm not going to reinvent the wheel. Instead, take a look [http://www.ubuntuforums.org/showthread.php?t=24113&highlight=grub+restore here] (forum) or here: RecoveringUbuntuAfterInstallingWindows

On the forum thread, there are a couple of methods proposed. I personally recommend the second one, posted by remmelt, since that has always worked for me.

Well that's it! I hope it was helpful!

Metodi alternativi


You might also want to check out these backup programs which will help you to make automated backups of your system:


Documento originale: [wiki:Ubuntu/BackupYourSystem BackupYourSystem] {en}