我从 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]
尽管有这个错误,它似乎还在工作,但摆脱它会很好。
如果 /foo/bar
在 NFS(或者可能是某个 FUSE 文件系统)上,则可能是问题所在。
无论哪种方式,将 -O
/ --omit-dir-times
添加到您的命令行将避免它尝试在目录上设置修改时间。
该问题可能是由于远程 darwin (OS X) 系统上的写入进程不拥有 /foo/bar。该问题的解决方案是在远程站点上设置足够的所有者。
由于这个答案已经过投票,因此希望对某人有用,我正在扩展它以使其更清晰。
发生这种情况的原因是 rsync 在复制文件时可能试图设置任意修改时间(mtime)。
为了做到这一点,darwin 的系统 utime()
功能要求写入过程的有效 uid 与文件 uid 或超级用户的相同,参见 opengroup utime's page。检查 rsync 邮件列表上的 this discussion 作为参考。
/remote/path/to/foo/bar
:rsync -avzP --exclude '.DS_Store' /local/path/to/foo/bar/ user1@1.2.3.4:/remote/path/to/foo/bar
,并得到了相同的错误消息,当我将 user1
设为 /remoe/path/to/foo/bar
的所有者时,这些错误消息消失了,如下所示:{5 }
正如@racl101 对答案的评论,这个问题可能与文件夹所有者有关。 rsync 命令应由与文件夹所有者相同的用户执行。如果不一样,您可以更改它。
chown -R userCorrect /remote/path/to/foo/bar
我的问题是“接收器安装点”安装不正确。它处于只读模式(出于某种额外的原因)。看起来 rsync 正在复制文件,但事实并非如此。我检查了我的 fstab 文件并将挂载选项更改为默认值,重新挂载文件系统并再次执行 rsync。那一切都好。
我有同样的问题。对我来说,解决方案是删除远程文件并让 rsync
再次创建。
当我写入一个不能(正确)处理时间的文件系统时,我已经看到了这个问题——我认为 SMB 共享或 FAT 之类的。
你的目标文件系统是什么?
sudo port install rsync
) 的最新版本,并且它会更少损坏。要检查它:rsync --version
:rsync 版本 3.0.5 协议版本 30 ... append、ACL、xattrs、iconv、symtimes、file-flags ...(ACL 和 xattrs 是重要的)
这发生在我的 xfs (rw,relatime,seclabel,attr2,inode64,noquota)
类型的分区上,其中目录由我们都是成员的组中的另一个用户拥有。组成员在登录之前已经建立,整个目录结构是组可写的。我已手动运行 sudo chown -R otheruser.group directory
和 sudo chmod -R g+rw directory
来确认这一点。
我仍然不知道为什么它最初不起作用,但通过 sudo chown -R myuser.group directory
获得所有权修复了它。也许与 SELinux 相关?
utime()
工作。您也可以以 root 身份运行并执行此操作。但如果文件的 UID 不同,它们不会让您将时间更改为“现在”以外的任何时间。
utime()
。
如果您对源或目标中最近未修改的文件运行 rsync 进程,也可能会弹出此错误...因为它无法为最近修改的文件设置时间。
我也遇到了这个问题,我遇到的问题是包含我试图发送的文件的根文件夹的权限问题。我不关心包含在 rsync
中的根文件夹,我只关心其中的内容。错误来自我的命令,我需要在最后指定一个额外的 /
。如果您没有尾部斜杠 rsync
将尝试设置文件夹的次数。
例子:
这将尝试在 html
设置时间
rsync /var/www/html/ ubuntu@xxx.xxx.xxx.xxx:html
这不会
rsync /var/www/html/ ubuntu@xxx.xxx.xxx.xxx:html/
可能是您对某些文件没有权限。从管理员帐户,尝试“sudo rsync -av” 或者,启用 root 帐户并以 root 身份登录。这应该可以让你完全控制你的系统并暴力破解你的 rsync! ;-) 我不确定上面提到的 --extended-attributes 是否有帮助,但我也把它扔进去了,只是为了更好的衡量。
-O
显然没有帮助。当我的备份分区是 ext3 而不是 ext4 时,这种情况不会发生。--no-t
以删除隐含选项。