作者:我我檬檬我我186 | 2023-08-29 09:37
我从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]
尽管有这样的错误,它似乎仍在工作,但摆脱它会很好.
1> Jon Bright..:
如果/foo/bar
是在NFS(或可能是某些FUSE文件系统)上,那可能就是问题所在.
无论哪种方式,添加-O
/ --omit-dir-times
到您的命令行将避免它尝试在目录上设置修改时间.
我使用rsync -avc,添加-O没有帮助.然后我读到-a与-rlptgoD相当,其中包括-t,我猜这是-O.所以对我来说,解决方法是使用-rlpgoDvc
有趣的是我将ext3同步到ext3这两个操作系统都是linux.我以前从未使用过此开关.-O做了这个伎俩,但我希望我不必使用它.
谢谢!事实证明,一些VPS主机(例如xlshosting.nl)在内部使用它,这可能会给rsync带来问题.
我从Linux ext4到Linux ext4的同样问题:对于*symlinks*而言,"无法设置时间:操作不允许",而不是目录.显然,`-O`没有用.当我的备份分区是ext3而不是ext4时,这不常发生.
2> anddam..:
问题可能是由于/ foo/bar不属于远程darwin(OS X)系统上的写入过程.
该问题的解决方案是在远程站点上设置足够的所有者.
由于这个答案已经被投票,因此对某人有用,我正在扩展它以使其更清楚.
发生这种情况的原因是rsync可能在复制文件时尝试设置任意修改时间(mtime).
为了做到这一点,darwin的系统utime()函数要求写入过程有效uid与文件uid或超级用户的相同,请参阅opengroup utime的页面.在rsync邮件列表上查看此讨论作为参考.
在Linux上也是一样的(在我的例子中是Debian Squeeze)...如果我不是目标目录的所有者,rsync会给出"设置次数失败"错误消息.(对目录具有写权限是不够的.)
当我尝试使用rsync命令将尝试影响的目录(在远程服务器上)的所有者更改为与尝试通过本地Bash脚本上的rsync登录的用户相同的用户时,此错误消失了.换句话说:我试图使用以下命令写入远程服务器上的`/ 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`的所有者时,它就消失了这个:`$ chown -R user1/remote/path/to/foo/bar`