![使用 rsync 将新文件从 NAS 复制到外部硬盘驱动器](https://linux22.com/image/220436/%E4%BD%BF%E7%94%A8%20rsync%20%E5%B0%86%E6%96%B0%E6%96%87%E4%BB%B6%E4%BB%8E%20NAS%20%E5%A4%8D%E5%88%B6%E5%88%B0%E5%A4%96%E9%83%A8%E7%A1%AC%E7%9B%98%E9%A9%B1%E5%8A%A8%E5%99%A8.png)
我想将新文件从 NAS 复制到外部硬盘。到目前为止,我确实手动复制了新文件。现在我想使用一个脚本来自动执行此操作。然而,到目前为止,我使用 rsync 尝试的所有操作似乎都复制了所有文件,而不仅仅是新文件。我尝试使用以下命令:
rsync -ar \
--ignore-existing \
--size-only \
--progress --info=progress2 \
--dry-run \
"/Volumes/NAS" "/Volumes/G-DRIVE mobile SSD R-Series"
我也尝试过不只使用大小,使用校验和等。有人可以向我解释这种行为或者我需要做什么才能完成我的任务吗?打印统计信息时,它总是显示它将传输所有文件。另外,通过 -i 参数,我可以获得每个文件的以下信息:>f++++++++++
答案1
正确的命令可能应该是这样的:
rsync --archive --progress --info=progress2 \
'/Volumes/NAS/' '/Volumes/G-DRIVE mobile SSD R-Series'
-a
( --archive
) 标志隐含( -t
)--times
和-r
( --recursive
),因此您无需显式指定它们。当您可以使用( )--size-only
获得大小和时间戳时,使用是一个糟糕的选择,但如果您要复制到有限的文件系统(例如 FAT),您可能需要一个时间窗口来克服两秒时间粒度。除非您在目标上获得任何类型的副本后想要忽略对源文件的更改,否则不应使用。-a
--archive
--modify-window=2
--ignore-existing
测试时一定要使用--dry-run
( -n
),但请记住在准备好rsync
应用操作时将其删除。
最后,源目录通常应该有一个尾部斜杠。文档是这样描述的,
源上的尾部斜杠会更改此行为,以避免在目标上创建额外的目录级别。您可以将
/
源尾随视为“复制该目录的内容“ 相对于 ”按名称复制目录”。