rsyncエラー:「/ foo / bar」で時間を設定できませんでした:操作は許可されていません


194

rsyncから紛らわしいエラーが発生し、Web検索(および通常のすべてのchmod処理)から最初に見つけたものはそれを解決していません。

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]

そのエラーにもかかわらずそれは動作しているようですが、それを取り除くといいでしょう。


いいえ、私が知る限り、通常のディレクトリです。
dreeves 2009年

私のエラーコードは22でしたが、同様の問題が発生しました:rsync:時刻の設定に失敗しました...無効な引数(22)。確認したところ、私のファイルの日付は1956年に最後に変更されたものであることがわかりました。解決策:すべてのファイルをタッチして、問題を解決しました。:) "find。-print0 | xargs -0 touch"
KIAaze

同じ宛先にcronジョブも設定している場合、このエラーが表示されます。cronジョブ(crontab)の時間を変更すると、問題を回避できます。私の場合、cronジョブも設定している場合に手動でrysncを実行すると、このエラーが発生します。
NelsonGon

回答:


286

場合は/foo/barNFS(またはおそらくいくつかのFUSEファイルシステム)上で、それが問題かもしれません。

どちらの方法でも、コマンドラインに-O/ --omit-dir-timesを追加すると、ディレクトリに変更時刻を設定しようとするのを回避できます。


8
おかしいのは、ext3をext3に同期していることです。どちらのOSもLinuxです。これまでにこのスイッチを使用する必要がありませんでした。-Oはトリックをしましたが、私はそれを使用する必要がなかったことを望みます。
d -_- b 2010

3
ありがとう!一部のVPSホスト(例:xlshosting.nl)はこれを内部で使用しているため、rsyncで問題が発生する可能性があります。
フレデリク

2
Linux ext4からLinux ext4にrsyncするのと同じ問題があります。ディレクトリではなく、シンボリックリンクに対して「時刻を設定できません:操作は許可されていません」。 -O明らかに役に立たない。これは、私のバックアップパーティションがext4ではなくext3である場合には発生しませんでした。
Marius Gedminas

10
私はrsync -avcを使用していて、-Oを追加しても効果がありませんでした。次に、-aは-rlptgoDと同等で、-Oをオーバーライドしていると思われる-tを含むと読みました。したがって、私にとっての修正は-rlpgoDvcを使用することでした
dlink

3
--no-t暗黙のオプションを削除するために追加できる@dlink 。
Noam Nelke

86

この問題は、リモートdarwin(OS X)システムの書き込みプロセスが/ foo / barを所有していないことが原因であると考えられます。 この問題の解決策は、リモートサイトに適切な所有者を設定することです。

この回答は投票されたため、誰かに役立つと期待されているので、明確にするために拡張します。

これが発生する理由は、rsyncがファイルのコピー時に任意の変更時間(mtime)を設定しようとしているためです。

このダーウィンのシステムutime()機能を実行するには、書き込みプロセスの有効なuidがファイルuidまたはスーパーユーザーのuidと同じである必要があります。opengrouputimeのページを参照してください。参照として、rsyncメーリングリストに関するこのディスカッションを確認してください。


10
Linuxでも同じです(私の場合はDebian Squeeze)...私がターゲットディレクトリの所有者でない場合、rsyncは「時間の設定に失敗しました」というエラーメッセージを表示します。(ディレクトリへの書き込み権限を持っているだけでは不十分です。)
ddekany

1
私は同じ問題に閉じ込められました。uid = userでNTFSをマウントするまで。
ジヴェンコア

3
このエラーは、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
racl101

1
グループ内の他のユーザーとファイルを共有する場合、たとえばスティッキービットを使用する場合、所有者の変更は実際の解決策ではありません。この警告を防ぐために-tを使用せず、-Oを追加します。
R.ヴァントゥイスク

1
答えを拡張して、ユーザーがファイル/ディレクトリを所有するグループの一部であるかどうか、またはそれが機能しないかどうかを詳しく説明できますか?
Elijah Lynn

4

@ racl101が回答にコメントしたため、この問題はフォルダの所有者に関連している可能性があります。rsyncコマンドは、フォルダーの所有者と同じユーザーが実行する必要があります。同じでない場合は、変更できます。

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

2

私の場合の問題は、「レシーバーマウントポイント」が正しくマウントされていないことでした。読み取り専用モードでした(何らかの理由により)。rsyncがファイルをコピーしていたように見えましたが、そうではありませんでした。fstabファイルをチェックして、マウントオプションをデフォルトに変更し、ファイルシステムを再マウントして、rsyncを再度実行しました。それなら大丈夫。


2

私も同じ問題を抱えていました。私にとっての解決策は、リモートファイルを削除して、rsyncもう一度作成することです。


0

時間を(適切に)処理しないファイルシステムに書き込んでいるとき、その問題を見てきました-SMB共有またはFATなどだと思います。

ターゲットのファイルシステムは何ですか?


私はMacで、Linux(スライスホストマシン)にrsyncしています。
dreeves 2009年

奇妙なことに、あなたはMacでrsyncを使用しているので、私はあなたに警告するべきです。例:blog.plasticsfuture.org/2006/04/23/mac-backup-software-harmful
David Wolever 2009年

ただし、MacPorts(sudo port install rsync)の最新バージョンを使用することもできます。それを確認するには::rsync --versionrsyncバージョン3.0.5プロトコルバージョン30 ...追加、ACL、xattrs、iconv、symtimes、ファイルフラグ...(ACLとxattrsは重要なものです)
David Wolever 2009年

1
Macintoshのrsyncは実際にすべてのファイル属性を設定し、かなり長い間これを行ってきました。「悪いことが起こる可能性があります」を参照しているURLの日付が2006年であることに注意してください!
tgunr 2013

2
回答には質問を含めないでください。これはコメントとしてより適切でしょう。
ブライアン

0

一部のファイルに対する権限がない可能性があります。管理者アカウントから「sudo rsync -av」を試すか、rootアカウントを有効にしてrootとしてサインインします。これにより、システムを完全にホースし、rsyncを総当たりにすることができます。;-)上記の--extended-attributesが役立つかどうかはわかりませんが、私はそれを適切な方法で投入しました。


0

これは、私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関連ですか?


manページには、アプリのUIDが記載されています。が機能するには、ファイルのUIDと一致する必要がありますutime()。rootとして実行して実行することもできます。ただし、ファイルのUIDが異なる場合、時間を「現在」以外に変更することはできません。
Alexis Wilke

そのようなマニュアルページにリンクできますか?私のどれも言及していませんutime()
サムブライトマン

1
linux.die.net/man/2/utime適切な段落:「タイムスタンプの変更は、次の場合に許可されます:プロセスに適切な特権があるか、実効ユーザーIDがファイルのユーザーIDと等しいか、または時刻がNULLでプロセスにファイルへの書き込み許可。」
Alexis Wilke

0

このエラーは、ソースまたは宛先で最近変更されていないファイルに対してrsyncプロセスを実行した場合にもポップアップする可能性があります...最近変更されたファイルの時間を設定できないためです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.