当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《rsync错误:无法在"/foo/bar"上设置时间:不允许操作》经验,为你挑选了2个好方法。

我从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`
推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有