rsync错误:failed to set times on“;/foo/bar”:操作不允许

我得到了一个令人困惑的错误从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]

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

249133 次浏览

当我向一个不能(正确地)处理时间的文件系统写入时,我就看到了这个问题——我认为SMB共享或FAT或其他东西。

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

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

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

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

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

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

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

为了做到这一点,darwin的system utime()函数要求写入进程的有效uid与文件uid或超级用户的uid相同,请参阅打开group utime页面。 在rsync邮件列表中检查这个讨论作为参考
在我的情况下,问题是“接收器挂载点”被错误地安装。它处于只读模式(出于某种特殊原因)。 看起来rsync正在复制文件,但实际上不是。 我检查了我的fstab文件,并将挂载选项更改为默认值,重新挂载文件系统并再次执行rsync。

这发生在一个类型为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-related ?

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

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

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

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

我也遇到了这个问题,我遇到的问题是根文件夹的权限问题,其中包含我试图发送的文件。我不关心根文件夹是否包含在rsync中,我只关心其中有什么。错误来自我的命令,我需要在最后指定一个额外的/。如果没有,rsync将尝试设置乘以文件夹。

例子:

这将尝试在html上设置时间

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

这不会

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

我在尝试修复新的MacOS Monterey上的时间戳时遇到了这个错误,因为迁移助手决定将所有时间戳设置为复制操作发生的时间,而不是原始文件的时间。

anddam的回答没有帮助我,因为rsync命令做了中使用的远程用户匹配目录和文件的所有者。

经过进一步的研究,我意识到我无法通过SSH访问Mac的文档目录(错误ls: Documents: Operation not permitted)。

我设法通过在Mac上打开系统设置来解决这个问题,然后选择安全,隐私,转到隐私选项卡选择全磁盘访问并勾选sshd-keygen-wrapper旁边的复选框。