Cloning or backing up a system with rsync
I have used rsync as the tool of my choice for a long time to often clone my system or make a backup, which I can still boot from. Feel free to use this code for your own projects. I would enjoy an attribution and a comment here or an email if you use it, but I will put this into the public domain.
Here is the rsync script I use. You just call it as modersync source-dir remote-dir. Source or remote-dir can be even / (the root dir to copy the running system or overwrite the running system). Be careful, use the switch -n (dry run) the first time you experiment with this. Source and remote-dir can even be remote locations reachable via scp.
[bash] #!/bin/bash
rsync a mobiledesktop
parameters: src, dest
src="$1" dst="$2"
LOGFILE=var/log/modersync.log
echo “Welcome to modersync, written by ulno (http://ulno.net).” echo "" echo “Last calls of modersync:” tail “$src/$LOGFILE” “$dst/$LOGFILE”|grep -v “$LOGFILE”|sort -u|tail echo "" echo “Source will be "$src/"” echo “Destination will be "$dst/"” echo “Extra parameters will be: "$3 $4"” echo “To proceed hit return (to interrupt press ctrl-c).” read
test -d “$src” -a -d “$dst” ||
(
echo “specify source and destination-directory!”
exit 1
)
rsync $3 $4 -av -H –delete –progress
–exclude /dev
–exclude /proc
–exclude /sys
–exclude /tmp
–exclude /mnt
–exclude /mnt2
–exclude /media
–exclude /MoDeSync
–exclude .gvfs
–exclude /etc/modules
–exclude /usr/local/etc/ulno-machine-settings
–exclude /boot/grub/menu.lst
–exclude /boot/grub/grub.cfg
–exclude /etc/default/grub
–exclude /etc/modules
–exclude /etc/fstab
–exclude /etc/mtab
–exclude /etc/X11/xorg.conf
–exclude /etc/hosts
–exclude /etc/hostname
–exclude /etc/resolv.conf
–exclude /etc/uswsusp.conf
–exclude /var/run
–exclude /run
–exclude /etc/modprobe.d/blacklist-custom.conf
–exclude “$LOGFILE”
“$src/” “$dst/”
rm “$dst/MoDeSync/dirty.generated” &> /dev/null
cp “$src/MoDeSync/dirty.generated” “$dst/MoDeSync/” &> /dev/null
logline="$(date -u +%s) $(date) on $(hostname) from /$src to /$dst." echo $logline » “$src/$LOGFILE” echo $logline » “$dst/$LOGFILE”
ldconfig update-grub dpkg-reconfigure initramfs-tools
echo echo “Done.”
[/bash]
Be careful, this script demands the folder MoDeSync to be present. The log is saved there and will give you a hint about the copy direction in the beginning.