关于我的 rsync 脚本的一个问题

关于我的 rsync 脚本的一个问题

所以我最近为 rsync 编写了一个 bash 脚本,用于将 USB 硬盘同步到我服务器上的文件夹。运行脚本一两天后,我注意到源文件夹中缺少一些文件。

有人可以帮我检查一下我的脚本,看它是否会从源中删除文件?(服务器文件夹)或者它是否只是从目标(USB HDD)删除不再存在于源上的文件(正如我的意思)。

 #!/bin/bash
# rsync folders

SOURCEDIR=/raid/orm_data/outputBatch2/rsta
DESTDIR=/media/exthdd/batch2

cd $SOURCEDIR
sudo rsync -h -v -r -P -t --delete-after --exclude="*/*/*/THUM" --exclude="*result*" --exclude=".DS_Store" --exclude="._.DS_Store" --include="*.pdf" --include="*.PDF" --include="*.jpg" --include="*.JPG" --include="*.tif" --include="*.TIF" --include="*.xhtml" --include="*.XHTML" --include="*.xml" --include="*.XML" $SOURCEDIR $DESTDIR

希望这不是脚本的问题(我的意思是它在测试中有效)。任何帮助都很棒 =] 非常感谢!

答案1

您使用的唯一rsync可能删除文件的选项是 ,--delete-after但它会从目标中删除文件,而不是从源中删除文件。--delete的所有选项都是如此rsync。 从源中删除文件的唯一选项是--remove-source-files

因此您的rsync命令不应从源中删除任何文件。

另外,该-h选项是为了帮助,在你的情况下没有任何作用,你也应该看看-a--archive)选项,因为你已经在使用它包含的大多数选项。

另外,由于您有许多--include模式,您应该在文件中定义模式并使用--include-from选项来使命令行更易读且易于维护。

相关内容