Rsync存档没有复制权限

Rsync存档没有复制权限

我正在运行此命令来同步我的 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,或-Xrsync 中的选项)和访问控制列表--acls,或-Arsync 中的选项)。

我使用 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 目的地时将其恢复。

相关内容