我编写了一个简单的 bash 脚本来每天将某些文件备份到备份装载并保留最近 3 天的备份。这显然太简单了,因为我偶尔会遇到奇怪的行为,这可以通过在 rm 完成之前执行第一个 mv 来解释。
这是脚本:
#!/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
Run Code Online (Sandbox Code Playgroud)
虽然这在很多时候都很好,但有时我会得到以下结果,看起来dailyBackup-1 在dailyBackup-2 完成删除之前被移动了。如果这是正在发生的事情,预防它的最佳方法是什么?
/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 …
Run Code Online (Sandbox Code Playgroud)