Clone or Backup Linux System

From Hack Sphere Labs Wiki
Revision as of 18:23, 12 May 2013 by Webdawg (talk | contribs) (rsync)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Using cp

The cp program can be used to clone a disk, one partition at a time. An advantage to using cp is that the filesystem type of the destination partition(s) may be the same or different than the source. For safety, perform the process from a live environment.

The basic procedure from a live environment will be:

  • Create the new destination partition(s) using fdisk, cfdisk or other tools available in the live environment.
  • Create a filesystem on each of the newly created partitions. Example:
mkfs -t ext3 /dev/sdb1
  • Mount the source and destination partitions. Example:
mount -t ext3 /dev/sda1 /mnt/source
mount -t ext3 /dev/sdb1 /mnt/destination
  • Copy the files from the source partition to the destination
cp -a /mnt/source/* /mnt/destination

-a: preserve all attributes , never follow symbolic links and copy recursively

  • Change the mount points of the newly cloned partitions in /etc/fstab accordingly
  • Finally, install the GRUB bootloader if necessary. (See GRUB)



if [ $# -lt 1 ]; then 
    echo "No destination defined. Usage: $0 destination" >&2
    exit 1
elif [ $# -gt 1 ]; then
    echo "Too many arguments. Usage: $0 destination" >&2
    exit 1

START=$(date +%s)
rsync -aAXv /* $1 --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/var/lib/pacman/sync/*}
FINISH=$(date +%s)
echo "total time: $(( ($FINISH-$START) / 60 )) minutes, $(( ($FINISH-$START) % 60 )) seconds"

touch $1/"Backup from $(date '+%A, %d %B %Y, %T')"
$ chmod +x
 /home/user/Scripts/ /some/destination