Lubuntu linux Tips | How to Clone your system
to a backup drive |
Clone your root partition to a backup
stick. Make it bootable. Use it as a backup image. Use it as a recovery stick. or Use it as an alternative system version (e.g for a different family member). Linux is basically a file system that starts from 'root' i.e '/'. You can backup your whole root partition by copying all the files to another drive and making it bootable. But you have to avoid problems like special attributes, permissions and folders you don't need. The basic command is 'rsync', which copies files that are different and deletes those that no longer exist. First you need to install a simple boot loader "extlinux" using your regular package manager (e.g synaptic). An example extlinux config file is found at the end of this article. Put extlinux.conf in the directory /boot/extlinux/extlinux.conf. Below are two scripts, one to do the copying, and the other to make the backup drive bootable. You do need one more file, the excludes.txt, containing a list of temporary directories that copy-root ignores. excludes.txt /mnt/*
/media/* /dev/* /proc/* /sys/* /run/* /tmp/* /etc/fstab /lost+found /home/*/.gvfs /boot/extlinux/* /home/*/Downloads/* /home/*/Videos/* /home/*/Pictures/* Whether you want the last three lines to be ignored is up to you. Generally I don't need to backup unneccesary large files. ./copy-root #!/bin/bash
# Makes a copy of the root partition files excluding all temporary directories # copy-root <to_partition> e.g copy-root sda1 if [ "$1" == "" ]; then echo please specify device e.g sdb1; exit; fi if [ `whoami` != root ]; then echo Please run as root or sudo; exit fi mkdir /mnt/$1 umount /dev/$1 mount /dev/$1 /mnt/$1 sync START=$(date +%s) rsync -vaAxX /* /mnt/$1/ --delete --exclude-from=excludes.txt FINISH=$(date +%s) sync echo "took $(( ($FINISH-$START) / 60 )) min:$(( ($FINISH-$START) % 60 )) sec." Make sure you know the target
device name eg. sdc1. You can find out by typing 'mount'.
Depending on how fast your drive is, the first copy should take between 5 to 30 mins. The first time you use it will be longer. subsequent times will be much quicker because rsync won't need to copy files already there. This can be as fast as 30 secs. Use the prime-boot script if you intend to boot the backup drive (which you will do if you want a complete restore) and only if you have installed extlinux (usually already installed in Lubuntu). ./prime-boot #!/bin/bash
# prime-boot <to_partition> e.g prime-boot sda1 # Readies a partition for booting # 1. priming attributes # 2. copying over a valid mbr (optional) # 3. copying /etc/fstab and opening to edit # 4. copying /boot/extlinux and opening to edit extlinux.conf # 5. displaying the disk uuid # 6. displaying instructions to run extlinux if [ "$1" == "" ]; then echo please specify device e.g sdb1; exit; fi if [ `whoami` != root ]; then echo Please run as root or sudo; exit fi mkdir /mnt/$1 2>/dev/null umount /dev/$1 2>/dev/null mount /dev/$1 /mnt/$1 sync chmod 755 /mnt/$1 chown 999:999 /mnt/$1 echo not modifying MBR.. #cat mbr.bin > /dev/sdx sync cp -f --parents /etc/fstab /mnt/$1/ sync chattr -i /mnt/$1/boot/extlinux/ldlinux.sys 2>/dev/null rm -r /mnt/$1/boot/extlinux/* 2>/dev/null cp -f --parents /boot/extlinux/* /mnt/$1/ sync #----- ls -l /dev/disk/by-uuid | grep $1 | cut -d\ -f9-12 blkid | grep $1 | cut -d\ -f1-2 # featherpad is an editor - you may want to change it to something else featherpad /mnt/$1/etc/fstab & featherpad /mnt/$1/boot/extlinux/extlinux.conf & cd /mnt/$1/boot/extlinux #---------------------------- echo if no MBR, e.g "cat mbr.bin > /dev/sdb" echo edit fstab and extlinux.conf, change the uuid as above. echo then cd /mnt/$1/boot/extlinux and do extlinux -i . # to remove ldlinux.sys , first chattr -i ldlinux.sys Most drives will usually already
have an MBR so that part is commented out.
(If you installed extlinux into the wrong directory and need to delete ldlinux.sys, first chattr -i ldlinux.sys.) After changing the UUIDs in /etc/fstab and /mnt/<dev>/boot/extlinux.conf, you can update EXTlinux; i.e cd /mnt/sdb1/boot/extlinux extlinux -i . don't forget the '.' at the end. (see installing extlinux) Example Output
Example fstab # /etc/fstab: static file system
information.
# # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc nodev,noexec,nosuid 0 0 # / was on /dev/sda3 during installation UUID=92c948c4-fcf7-4a98-86cb-a752678c5a40 / ext4 errors=remount-ro 0 1 Example extlinux.conf DEFAULT linux
LABEL linux SAY Now booting the kernel using EXTLINUX... KERNEL /boot/vmlinuz-3.2.0-23-generic-pae APPEND ro root=UUID=92c948c4-fcf7-4a98-86cb-a752678c5a40 initrd=/boot/initrd.img-3.2.0-23-generic-pae After a while you may want archive your backup disks. |
||||||||||
More Lubuntu Tips |