我得到了一个令人困惑的错误从rsync和最初的东西,我发现从网络搜索(以及所有通常的chmod'ing)没有解决它:

rsync: failed to set times on "/foo/bar": Operation not permitted (1)
rsync error: some files could not be transferred (code 23) 
  at /SourceCache/rsync/rsync-35.2/rsync/main.c(992) [sender=2.6.9]

尽管有这个错误,它似乎还是可以工作的,但是去掉它会很好。


当前回答

可能是因为您对某些文件没有权限。从管理员帐户尝试“sudo rsync -av”或者启用root帐户并以root帐户登录。这应该允许您完全软管您的系统和蛮力您的rsync!;-)我不确定上面提到的扩展属性是否会有帮助,但我也把它扔进去了,只是为了更好地衡量。

其他回答

正如@racl101评论的答案,这个问题可能与文件夹所有者有关。rsync命令应该由文件夹所有者的同一用户执行。如果不一样,你可以改变它。

chown -R userCorrect /remote/path/to/foo/bar

如果/foo/bar在NFS(或者可能是一些FUSE文件系统)上,这可能就是问题所在。

无论哪种方式,在命令行中添加-O /——省略-dir-times将避免它试图设置目录的修改时间。

这发生在一个xfs (rw,relatime,seclabel,attr2,inode64,noquota)类型的分区上,其中的目录由我们都属于的组中的另一个用户拥有。登录前已经建立了组成员关系,整个目录结构是可组写的。我手动运行sudo chown -R otheruser。group目录和sudo chmod -R g+rw目录来确认。

我仍然不知道为什么它没有工作最初,但采取所有权与sudo chown -R myuser。组目录修复了它。也许SELinux-related ?

该问题可能是由于/foo/bar不属于远程darwin (OS X)系统上的写入进程。 解决这个问题的一个方法是在远程站点上设置足够的所有者。

由于这个答案已经被投票,因此希望对某些人有用,我将其扩展以使其更清楚。

发生这种情况的原因是rsync在复制文件时可能试图设置任意修改时间(mtime)。

为了做到这一点,darwin的system utime()函数要求写入进程的有效uid与文件uid或超级用户的uid相同,请参阅opengroup utime的页面。 查看rsync邮件列表上的讨论作为参考。

可能是因为您对某些文件没有权限。从管理员帐户尝试“sudo rsync -av”或者启用root帐户并以root帐户登录。这应该允许您完全软管您的系统和蛮力您的rsync!;-)我不确定上面提到的扩展属性是否会有帮助,但我也把它扔进去了,只是为了更好地衡量。