我已将 rsync 设置为每天使用 将 Raspberry Pi 上的根文件系统备份到 USB 驱动器/usr/bin/rsync -ahPHAXx --stats --delete-during / /mnt/backup/pi-backup/
。但是,如果未安装 USB 磁盘,rsync 会/pi-backup
在 内创建目录/mnt/backup
。我不希望发生这种情况,并且如果不存在,我希望 rsync 失败并出现错误/mnt/backup/pi-backup
。我该怎么做?
答案1
您可以使用 Bash 检查该目录是否存在,然后运行 rsync 命令。
# Example test one-liner
# If backup directory exists, print exists, else print error.
if [ -d "/mnt/backup/pi-backup" ] ; then echo "exists" ; else echo "Error: backup directory doesn't exist!"; fi
# One-liner with rsync command
# I didn't test this with the rsync command.
if [ -d "/mnt/backup/pi-backup" ] ; then /usr/bin/rsync -ahPHAXx --stats --delete-during / /mnt/backup/pi-backup/ ; else echo "Error: backup directory doesn't exist!"; fi
答案2
我使用这条单行代码修复了它,/bin/mountpoint /mnt/backup && /usr/bin/rsync -ahPHAXx --stats --delete-during / /mnt/backup/pi-backup/
如果 USB 驱动器未安装,则代码会回显“/mnt/backup 不是安装点”并以退出代码 1 失败。我还使用sudo chattr +i /mnt/backup
卸载的驱动器使安装点不可变,因此如果 USB 未安装,则无法写入任何内容。
答案3
我认为这可以通过附加到目标目录来实现/.
——至少对我来说是可行的。所以你可以尝试这样的事情:
/usr/bin/rsync -ahPHAXx --stats --delete-during / /mnt/backup/pi-backup/.