Rsync 未正确设置 Windows 文件夹的权限

Posted

技术标签:

【中文标题】Rsync 未正确设置 Windows 文件夹的权限【英文标题】:Rsync does not properly set permissions on Windows folder 【发布时间】:2011-07-11 11:38:26 【问题描述】:

我在 Windows 7 上使用 rsync(特别是 cwrsync)。我正在使用一个简单的命令:

rsync -r --perms --delete /cygdrive/c/Users/Michael/Documents/Personal/ /cygdrive/c/Users/Michael/Documents/Personal_Backup/

递归副本工作正常,除非我要(右键单击/属性/安全选项卡)在目标上由 rsync 创建的任何文件夹;我收到以下弹出消息:

folderName 上的权限排序不正确,这可能会导致 一些条目无效。

我也尝试了 --acls 选项,但收到以下错误:

recv_acl_access:值超出范围:ff rsync 错误:rsync 中的错误 acls.c(690) [Receiver=3.0.] 处的协议数据流(代码 12)。同步: 连接意外关闭(到目前为止已收到 9 个字节)[发件人] rsync 错误:rsync 协议数据流(代码 12)中的错误 io.c(610) [发件人=3.0.8]

无论如何,我只想正确使用 rsync,以便在 Windows 中查看安全权限不会引发错误。

【问题讨论】:

【参考方案1】:

迈克尔,

This solution 建议您不要使用--perms,而应使用--chmod=ugo=rwX

祝你好运!

多坦

【讨论】:

【参考方案2】:

一个字,Robocopy

我在使用 cwRsync 时遇到了完全相同的权限问题,尝试了很多方法,但似乎都没有,所以我最终放弃了。

这是默认的 Windows 工具,具有类似(出于您的目的,相同)功能集。

我昨晚发现了它并完全放弃了 rsync。它是为类 unix 构建的,因此在 Windows 上可能会遇到一些麻烦。

这让我开始了:

http://www.sevenforums.com/tutorials/187346-robocopy-create-backup-script.html

这是我为自己制作的小backup script,用于将我的分区镜像到外部驱动器。

不要再回头看 rsync。

【讨论】:

【参考方案3】:

在复制发生后,我使用现已弃用的 cacls 重新添加自己。

rsync -avASPC sourceDir/* destDir
cacls destDir /t /e /r doej
cacls destDir /t /e /g doej:f

其中 sourceDir 是源目录,destDir 是目标目录,doej 是用户名。使用icacls可能会更好,但我还没有学会。

我也尝试过 robocopy,但我似乎没有完成这项工作所需的权限。

用于 rsync 的标志

 -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
    -r, --recursive             recurse into directories
    -l, --links                 copy symlinks as symlinks
    -p, --perms                 preserve permissions
    -t, --times                 preserve modification times
    -g, --group                 preserve group
    -o, --owner                 preserve owner (super-user only)
    -D                          same as --devices --specials
       --devices               preserve device files (super-user only)
       --specials              preserve special files
 -v, --verbose               increase verbosity
 -S, --sparse                handle sparse files efficiently
 -A, --acls                  preserve ACLs (implies -p, which is also implied by -a)
 -P                          same as --partial --progress
    --progress              show progress during transfer
    --partial               keep partially transferred files
 -C, --cvs-exclude           auto-ignore files in the same way CVS does

从 CACLS 使用的标志

  /T            Changes ACLs of specified files in
  /E            Edit ACL instead of replacing it.
  /R user       Revoke specified user's access rights (only valid with /E).
  /P user:perm  Replace specified user's access rights.
                Perm can be: ...
                           F  Full control

【讨论】:

以上是关于Rsync 未正确设置 Windows 文件夹的权限的主要内容,如果未能解决你的问题,请参考以下文章

Rsync在Windows系统和Linux系统间进行文件同步操作

Linux和windows server使用rsync同步部署方案及注意事项

Linux下利用rsync实现多服务器文件同步

Windows系统中怎么样使用Rsync同步文件

Windows系统中怎么样使用Rsync同步文件

rsync未授权访问漏洞复现