Rsync在Windows文件夹上没有正确设置权限

6

我正在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: value out of range: ff rsync error: error in rsync protocol data stream (code 12) at acls.c(690) [Receiver=3.0. rsync: connection unexpectedly closed (9 bytes received so far) [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(610) [sender=3.0.8]
无论如何,我只想正确使用rsync,以便在Windows中查看安全权限时不会出错。
3个回答

3

Michael,

这个解决方案建议您不要使用--perms,而是使用--chmod=ugo=rwX

祝你好运!

Dotan


1

一个词,Robocopy

我在使用cwRsync时遇到了同样的权限问题,尝试了很多方法但都没有解决,最终放弃了。

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

昨晚我发现了它,并完全放弃了rsync。它适用于类Unix系统,因此在Windows上可能会有些问题。

这让我开始行动:

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

这是我为自己制作的备份脚本,用于将我的分区镜像到外部驱动器。
不再使用rsync。

0

在复制完成后,我使用现已弃用的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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接