232

我从 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]

尽管有这个错误,它似乎还在工作,但摆脱它会很好。

4

10 回答 10

319

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

无论哪种方式,将-O/添加--omit-dir-times到您的命令行将避免它尝试在目录上设置修改时间。

于 2009-03-20T21:20:24.643 回答
95

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

由于这个答案已经过投票,因此希望对某人有用,我正在扩展它以使其更清晰。

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

为了做到这一点,darwin的系统utime()功能要求编写过程的有效uid要么与文件uid相同,要么与超级用户的uid相同,请参见opengroup utime的页面。检查这个关于 rsync 邮件列表的讨论作为参考。

于 2012-01-06T12:16:30.397 回答
9

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

chown -R userCorrect /remote/path/to/foo/bar
于 2020-04-29T14:56:10.630 回答
3

我的问题是“接收器安装点”安装不正确。它处于只读模式(出于某种额外的原因)。看起来 rsync 正在复制文件,但事实并非如此。我检查了我的 fstab 文件并将挂载选项更改为默认值,重新挂载文件系统并再次执行 rsync。那一切都好。

于 2014-10-15T08:14:12.810 回答
3

我有同样的问题。对我来说,解决方案是删除远程文件并rsync重新创建。

于 2019-02-25T07:33:14.423 回答
1

当我写入一个不能(正确)处理时间的文件系统时,我已经看到了这个问题——我认为 SMB 共享或 FAT 之类的。

你的目标文件系统是什么?

于 2009-03-20T21:19:32.447 回答
0

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

我仍然不知道为什么它最初不起作用,而是通过sudo chown -R myuser.group directory修复它获得所有权。也许与 SELinux 相关?

于 2016-09-06T08:32:14.497 回答
0

如果您对源或目标中最近未修改的文件运行 rsync 进程,也可能会弹出此错误...因为它无法为最近修改的文件设置时间。

于 2016-12-08T15:23:14.737 回答
0

我也遇到了这个问题,我遇到的问题是包含我试图发送的文件的根文件夹的权限问题。我不关心包含在其中的根文件夹,rsync我只关心其中的内容。错误来自我的命令,我需要/在最后指定一个附加值。如果您没有该斜杠,rsync将尝试设置该文件夹的次数。

例子:

这将尝试设置时间html

rsync /var/www/html/ ubuntu@xxx.xxx.xxx.xxx:html

这不会

rsync /var/www/html/ ubuntu@xxx.xxx.xxx.xxx:html/
于 2021-12-27T00:29:41.057 回答
-1

可能是您对某些文件没有权限。从管理员帐户,尝试“sudo rsync -av” 或者,启用 root 帐户并以 root 身份登录。这应该可以让你完全控制你的系统并暴力破解你的 rsync!;-) 我不确定上面提到的 --extended-attributes 是否有帮助,但我也把它扔进去了,只是为了更好的衡量。

于 2010-02-15T21:08:15.233 回答