8

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

DIR=/Volumes/External; 
if [ -e $DIR ]; 
then rsync -av ~/dir_to_backup $DIR; 
else echo "$DIR does not exist"; 
fi

这可行,但我觉得我误读了 rsync 手册页。如果顶级目标目录不存在,是否有内置的 rsync 选项可以中止运行?在不测试 /Volumes/External 的存在的情况下,如果目录尚未挂载,则将使用该名称创建目录。

4

3 回答 3

4

这两个标志看起来像您要查找的内容:

--existing, --ignore-non-existing

从手册页:

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

于 2009-01-04T14:58:54.790 回答
4

AFAIK 不,但你可以用斜杠模拟行为:

rsync -av dir_to_backup /Volumes/External/;

如果目录不存在(可能需要也可能不需要),它将退出并出现错误。

此外,您始终可以优化 if:

test -e $DIR && rsync -av ...

于 2009-01-04T15:00:56.067 回答
1

不,据我从手册页中看到的,似乎没有任何这样的选项。

于 2009-01-04T15:03:40.787 回答