Below some of the solutions to backup your data on Linux systems. All backup and restoring procedures should be executed in read-only mode (e.g., running a Live Distro).
Logical backup using find
and cpio
of the entire file system
~# find / -path '/media' -prune -o -path '/tmp' -prune -o -path '/lost+found' -prune -o -print | cpio -dumpv /media/<backup_dir>
The above command find and copy (preserving original permissions and owners) all directories and files within /
. We exclude from backup the following paths: /media
, /tmp
, /lost+found
Physical backup using dd
~# dd if=/dev/sdXY of=/media/<backup_dir>/<backup_file>.dmp conv=noerror,sync
where X
is the character identifying the disk, while Y
is the digit identifying the partition. Remove the number of the partition if you like to backup the entire disk (i.e., MBR, partition table and all partitions).
If your partition has some errors, before restoring your data, you can directly work on the dump file to fix the problems. For instance, assuming to have a partition with the old EXT3, run the following command to automatically fix the errors:
~# fsck.ext3 -p /media/<backup_dir>/<backup_file>.dmp
If the above command fails, you can try to manually repair the file system running the command with the -f
parameter:
~# fsck.ext3 -f /media/<backup_dir>/<backup_file>.dmp
After all fixes, you can mount the dump file to investigate if everything is OK:
~# mount -o loop,ro -t ext3 /media/<backup_dir>/<backup_file>.dmp /media/<mount_point>
Finally, you can restore all data in a new partition (or disk in case of an entire backup):
~# dd if=/media/<backup_dir>/<backup_file>.dmp of=/dev/sdXY
Hack: you can display the backup/restore progress running the following command:
~# killall -USR1 dd
or
~# ps -ef | grep -i dd
~# kill -USR1 <pid>
Some alternatives to dd
1) sdd
: a custom version of dd
. You can check the progress of the operation if you run the command with the parameter -time
and then press CTRL-/
or CTRL-4
(SIGQUIT).
2) ddrescue
: another data recovery tool. Besides copying files from one block to another, it also tries to rescue data in case of read errors.
~# ddrescue -v -r3 /dev/sdXY /media/<backup_dir>/<backup_file>.dmp
where -r3
says to try atmost 3 times on bad sectors.