所以我最近为 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
选项来使命令行更易读且易于维护。