我正在尝试将 Windows 计算机上的外部硬盘驱动器备份到运行 macOS Catalina 的 iMac 上的外部硬盘驱动器。我正在使用 Robocopy 批处理文件来镜像这两个驱动器。我使用的代码如下。
robocopy F:\ \\192.168.1.100\4TBExternal\ /MIR /R:2 /W:5 /XA:SH /XF ".DS_Store" /XD "System Volume Information" "SteamLibrary" "New" "MSOCache" "Recovery" "msdownld.tmp" "found.001" "found.002" "found.003" "found.004" "found.005" "found.006" ".Spotlight-V100" ".Trashes" $RECYCLE.BIN
以前,我将 Windows 上的外部驱动器备份到 Raspberry Pi 上的外部驱动器,但我想让 Plex 在我的 iMac 上运行,所以我移动了外部驱动器,将其擦除,将其格式化为 APFS,并尝试设置相同的 robocopy 备份系统(从 Windows 进行任务计划备份)。但每次我运行 robocopy 时,iMac 都会锁定试图复制新文件的文件夹。我能找到的唯一解决方案是手动解锁文件夹。虽然我发现此代码能够解锁文件夹。
chflags -R nouchg /Volumes/4TBExternal/
我必须在系统偏好设置中的“安全和隐私”中将 smbd 和终端添加为“完全磁盘访问”,以允许 SMB 共享开始共享它。我还删除了所有所有权 ACL,然后重新添加了权限。
sudo chmod -RN /Volumes/4TBExternal/
sudo chmod -R 1777 /Volumes/4TBExternal/
但是,当我启动通过 SMB 传输的脚本时,robocopy 批处理脚本仍然会锁定文件夹。当我通过 Windows 资源管理器进行传输时,没有锁定(将电影从 F:\Movies 复制到 Y:\Movies(其中 Y:是 \192.168.1.100\4TBExternal))
为什么那个特定的 robocopy 脚本会锁定文件夹,阻止任何内容被复制?我将深入研究 SMB 配置文件,甚至在备份期间以某种重复的方式运行解锁代码(考虑到我目前没有备份,这总比什么都不做要好 :))。任何帮助都将不胜感激。谢谢!
此外,我不相信我在 Windows 上激活了 SMBv1。Windows 功能中未启用 SMBv1
答案1
我遇到了同样的问题。只有当 robocopy 尝试创建新文件夹时才会发生这种情况。将文件复制到任何深度的现有文件夹中都可以正常工作。
通过在 robocopy 命令中添加 /NODCOPY 标志来解决。此标志会正常复制目录结构,但不复制任何属性。似乎如果没有此标志,robocopy 会尝试复制与 MacOS 不兼容的文件夹属性,MacOS 会锁定文件夹(以“保护”它?)。