我正在运行此命令来同步我的 NAS 和内部硬盘 (MBP 2018 Big Sur) zsh 上的文件。
我正在运行,rsync -avi --delete /Volumes/DRIVENAME/ /Volumes/NAS/folder/DRIVENAME/
其中 /Volumes/DRIVENAME/ 是使用磁盘工具创建的内部 APFS 驱动器。
输出:每个文件一行
.d...p... path/to/filename.txt
该命令不断同步相同的文件,我不久前尝试运行它,它工作正常,即文件不会再次被复制。我认为 zsh 可能与此有关。
请让我知道我可以尝试哪些标志,或者让我知道是什么导致了这种情况的发生。
谢谢
答案1
不同的文件系统可以具有不同的权限集,这意味着您在复制/移动时无法始终保留它们。
即使相同的文件系统也可以使用无法保留权限的选项进行安装。
在这种情况下,您可能想要添加该--no-perms
标志。
答案2
你的问题我不清楚。您似乎对 存在疑问rsync
,但不太清楚它是什么 - 除了它没有做您的事情预期的它要做。除了介绍一些基础知识之外,我不知道如何回答:
1. 您的 Q 包含以下内容:
输出:每个文件一行
.d...p... path/to/filename.txt
这似乎是由于该选项而导致的输出中的一行-i
。这是一个帮助您了解如何解释的资源这些行中的每一行。如果您查阅此资源(或阅读man rsync
),您会从问题中了解到这一行意味着目录( d
) 列出了一组不同的权限( p
) 上目的地比它对来源
2.您使用的选项对您的命令-a
的结果有意义:rsync
-a
=-rlptgoD
p
方法preserve permissions
;即与您的一行输出所指的权限相同。如果可以的话,rsync
将更改目标上的权限以匹配源上的权限。rsync 不会传输文件来完成此操作- 它只是更改权限。您在问题中没有提供错误消息,因此我们必须假设rsync
已轻松完成此权限更改。如果情况并非如此,请编辑您的问题。
如果rsync
无法更改目的地的权限,您可以找到更多选项来帮助您解决此问题。查看man rsync
,特别注意--fake-super
(和相关)选项。此选项在处理(例如)NAS 设备上的文件系统时非常有用 - 这通常与APFS
.
3.FWIW:
当前在 MacOS 上使用的 APFS 是专有的 pos。苹果非常喜欢以不同的方式做事,并广泛利用元数据在他们的文件系统中。此元数据在各种 MacOS 功能中发挥着重要作用,这意味着要保留该功能,您必须保留元数据!特别是这里rsync
有支持这一目标的选项。这元数据Apple 如此依赖的编码被编码在扩展属性(xattr
,或-X
rsync 中的选项)和访问控制列表(--acls
,或-A
rsync 中的选项)。
我使用 NAS 在 Mac 系统之间同步一些用户数据。我最常用的rsync
命令是:
- 从 MacOS 到 NAS:
$ rsync -rlAXtgoDvi --fake-super /mac/source/folders/ /nas/dest/folders
- 从 NAS 到 MacOS
$ rsync -rlAXtgoDvi --fake-super /nas/source/folders/ /mac/dest/folders
这非常有用:即使我的 NAS 使用与 Mac 完全不同的文件系统,rsync
也能够在 NAS 上保留 Mac 的所有元数据,然后在到达其 APFS 目的地时将其恢复。