我有2个dirs:src和dst。 Src只包含1个文件“index.php”。 Dst包含“index.php”和“readme.txt”。 我也有一个list.txt文件,它只包含一行:“index.php”。
现在,在包含src和dst的目录中,执行以下命令:
rsync -av --include-from=list.txt src/ dst/ --del
它会更新“index.php”文件,但它也会删除readme.txt文件。
为什么删除它,如果它不在list.txt文件中? 任何简单的方法来“解决”这种行为?
我基本上想要的是使rsync只关心列表中的文件。 他们可能需要更新或删除(因此–del选项),但我不希望它触及其他文件。 我不能使用“–files-from”选项,因为它不会删除目标中的文件。
编辑:“index.php”只是一个例子 – 事实上太简单的例子,因为src和dst可能包含整个目录树,所以如果list.txt有一个像“abc / test.php”这样的条目,它也应该工作这个文件。
解决方法是添加--exclude=* :
rsync --verbose -r --del --include-from=list.txt --exclude=* src/ dst/
只会更新list.txt文件,并且只能从list.txt删除, 并且包含在list.txt 。