如何仅在目标目录存在时告诉rsync运行?

Mar*_*cus 6 bash rsync

我有这个bash脚本将我的备份运行到外部硬盘驱动器...只有安装了该驱动器(OS X):

DIR=/Volumes/External; 
if [ -e $DIR ]; 
then rsync -av ~/dir_to_backup $DIR; 
else echo "$DIR does not exist"; 
fi
Run Code Online (Sandbox Code Playgroud)

这有效,但我感觉我误读了rsync手册页.如果顶级目标目录不存在,是否有内置rsync选项来中止运行?如果不测试/ Volumes/External是否存在,将使用该名称创建目录(如果尚未安装).

Ray*_*sen 4

这两个标志看起来像您正在寻找的:

--existing, --ignore-non-existing
Run Code Online (Sandbox Code Playgroud)

从手册页:

--existing, --ignore-non-existing
这告诉 rsync 跳过创建目标上尚不存在的文件(包括目录)。如果此选项与 --ignore-existing 选项结合使用,则不会更新任何文件(如果您只想删除无关文件,这会很有用)。