我正在使用 Cygwin 运行定期备份,例如:
cp -a "$(cygpath C:\Users\S\Documents)" "$BU_FOLDER"
但是我注意到创建文件夹或文件的命令(例如cp
或)mkdir
,在属性->安全选项卡(在Windows资源管理器上)上创建特殊权限,以便在Windows上创建与POSIX兼容的环境,我相信。
这会导致问题。如果您按照这些步骤操作,您将无法访问复制目标中的文件。
- 如果我运行上面的命令来复制 Documents 文件夹
- 然后决定删除目标中的文件夹($BU_FOLDER/Documents/myfolder)
然后 Windows 挂起一小会儿,删除了该文件夹但锁定了我无法查看该文件夹:
cp
当您使用或 时,这些权限将被添加到安全选项卡中mkdir
:
我找不到从所有文件夹中递归删除这些权限的方法。
我应该停止使用 Cygwin 吗?这些权限在 Cygwin 中工作正常,我可以修改目标中的文件夹和文件,但是当我在 Windows 资源管理器上执行这些操作时,会发生这些奇怪的意外行为,这让我作为最终用户感到困惑。
答案1
复制 Windows 文件的最佳和最快捷的方法是使用Robocopy
https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy
另请参阅/COPYALL
复制选项NTFS access control list (ACL)
。
Cygwin 使用一些技巧来模拟 Unix 权限
http://www.cygwin.com/cygwin-ug-net/highlights.html#ov-hi-perm
并且使用 Cygwincp
或者rsync
复制所有 Windows 权限非常麻烦。
我会坚持使用Robocopy
需要 Windows ACL 权限的 Windows 文件和需要 Cygwin/Unix 权限的文件的 Cygwin 工具。
答案2
我找到了一个解决方案来解决这个问题。毫无意义的权限将不再显示在“安全”选项卡上,也不会显示警告。解决方案是您必须使用 Windows 资源管理器或 Cygwin 以外的任何程序将文件或目录移动到另一个驱动器,您可以检查 Linux 权限是否不再位于“安全”选项卡上,现在您可以将其移回,或移到计算机上任何驱动器中的任何位置。我不知道这是怎么回事。在 Windows 11 23H2、22631.3447 上测试。