rsync错误:无法在“/ foo / bar”上设置时间:操作不允许

我收到了一个来自rsync的混淆错误,我从网页search(以及所有通常的chmod'ing)中find的最初的东西都没有解决:

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] 

尽pipe出现了这个错误,但它似乎仍在工作,但是摆脱这一点将会很好。

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

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

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

既然这个答案已经被投票了,所以对某个人有希望有用,所以我把它扩大到更清楚。

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

为了达到这个目的,达尔文的系统utime()函数要求写入过程有效的uid与文件uid或超级用户的一样,请参阅opengroup utime的页面 。 请参阅rsync邮件列表上的讨论 。

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

当我正在写文件系统时,我看到了这个问题,这个文件系统没有(正确)处理时间 – 我认为SMB共享或FAT等等。

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

这可能是你没有权限的一些文件。 从pipe理员帐户,请尝试“sudo rsync -av”或者,启用root帐户并以root身份login。 这应该让你完全软pipe你的系统,并蛮力rsync! ;-)我不确定上面提到的 – 扩展属性是否会有帮助,但是我也把它扔了,只是为了好的方法。

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

我仍然不知道为什么原来不工作,但采取与sudo chown -R myuser.group directory所有权修复它。 也许SELinux相关?

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