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
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:
Physical backup using
~# dd if=/dev/sdXY of=/media/<backup_dir>/<backup_file>.dmp conv=noerror,sync
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
~# 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
~# ps -ef | grep -i dd
~# kill -USR1 <pid>
Some alternatives to
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
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
-r3 says to try atmost 3 times on bad sectors.