rsync 到 cifs 挂载但保留权限

rsync 到 cifs 挂载但保留权限

我正在将 Linux 服务器备份到 Windows 共享。我目前正在使用 cifs 安装 Windows 共享,并使用 rsync 进行增量备份。文件权限和所有权没有被保留,这是阅读后应该预料到的这个 samba 文档

核心 CIFS 协议不提供文件和目录的 unix 所有权信息或模式。因此,文件和目录通常看起来归 uid= 或 gid= 选项设置的任何值所有,并且将权限设置为挂载的默认 file_mode 和 dir_mode。

如何实现在写入 Windows 共享时保留 unix 文件权限的目标?是否有其他网络文件系统允许我执行此操作?

谢谢。

答案1

CIFS 协议有一个扩展,用于添加对 POSIX 文件权限的支持(不确定是否支持 ACL),这已经是 Samba 的一部分。如果您安装Unix 服务(或微软现在的称呼),它也应该将此功能添加到 Windows。此外,SfU 还附带 NFSv3 的服务器和客户端,它是为 Unix 文件系统设计的。

答案2

编辑: 正如 gravity 指出的那样MS 有一个附加包阅读他的回答第一的。


不仅网络文件共享协议不保存此类权限数据,Windows 文件系统本身也没有地方存放这些数据*。唯一的方法是在 Windows 之上添加某种层,以便同时拥有具有这些功能的文件系统和网络协议。这可能是带有磁盘映像的虚拟机,或带有 cygwin 的疯狂魔法,或特殊的 Windows 驱动程序,但这一切都需要一些工作。

如果您的用例非常简单,您喜欢备份,那么您可以考虑使用tarfor。或者rsnap。这些可以将您的数据制作成单个文件对象,并将所有文件权限数据嵌入其中,然后您可以压缩它们并通过网络将它们发送到您喜欢的任何文件系统。甚至有方法可以处理增量数据更新。这可能是解决问题的低技术方法。

* 除非您添加他们的 Unix 服务工具集来设置可比层并存储额外的权限数据...在某处。

相关内容