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.