I wrote a simple bash script to backup certain files daily to a backup mount and keep the last 3 days of backups. It's obviously too simple, as I'm occasionally getting odd behaviour that could be explained by the first mv being excecuted before the rm is complete.
Here's the script:
#!/bin/bash mount /mnt/backups while [ ! -d /mnt/backups/dailyBackup-0 ] do echo "Backup mount not present, sleeping..." sleep 30 done rm -r /mnt/backups/dailyBackup-2 mv /mnt/backups/dailyBackup-1 /mnt/backups/dailyBackup-2 mv /mnt/backups/dailyBackup-0 /mnt/backups/dailyBackup-1 dirname="/mnt/backups/dailyBackup-0" mkdir $dirname cd / rsync -qr --stats root etc var $dirname umount /mnt/backups
Although this is fine a lot of the time, I sometimes end up with the following, which looks like dailyBackup-1 is being moved before dailyBackup-2 has finished being deleted. If that is what's happening, what is the best way to prevent it?
/mnt/backups/dailyBackup-0: total 0 drwxrwxrwx 1 root root 0 2010-12-07 03:27 var drwxrwxrwx 1 root root 0 2010-12-07 02:39 root drwxrwxrwx 1 root root 0 2010-12-07 02:38 etc /mnt/backups/dailyBackup-1: total 0 drwxrwxrwx 1 root root 0 2010-12-06 03:26 var drwxrwxrwx 1 root root 0 2010-12-06 02:32 root drwxrwxrwx 1 root root 0 2010-12-06 02:32 etc /mnt/backups/dailyBackup-2: total 0 drwxrwxrwx 1 root root 0 2010-12-07 02:36 var drwxrwxrwx 1 root root 0 2010-12-05 03:21 dailyBackup-1