如果目标不存在,Rsync 不会在目标处创建目录

如果目标不存在,Rsync 不会在目标处创建目录

我已将 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/.

(感谢https://unix.stackexchange.com/questions/479441/run-rsync-only-if-target-directory-exists#comment876718_479441谢谢您的建议!)

相关内容