web-dev-qa-db-ja.com

rsync:「<dir path>」で時間を設定できませんでした

サーバー間でファイルをrsyncしようとしていますが、このエラーが発生します

rsync: "/ dept/intranet/dept/atest /。"で時間を設定できませんでした:操作は許可されていません(1)

誰かがなぜ私を助けることができますか?

権限の問題だと思います。

これは私のコマンドです:

RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
REMOTE_Host=test.desktop

${RSYNC} -crlt -e ${SSH} ${LOCAL_DIR} ${REMOTE_Host}:${REMOTE_DIR}

LOCAL_DIR = workplace1/f1/
permissions drwxr-xr-x   11 root     root         4096 Mar 19  2009 f1

REMOTE_DIR=/dept/intranet/dept/atest/f1/
permissions :drwxr-xr-x 14 dbld   a1     4096 Mar 19  2009 f1     
20
TopCoder

ちょうど同じページにいるので:

-r recursive
-l preserve links
-c sync based on file checksum
-t preserve modification times

次に、2つのこと:

それは単なるファイルシステムです

宛先フォルダーがNFSマウントである場合、またはmod-timeを適切に処理できないファイルシステムの場合、うまく機能しません。

-O--omit-dir-times用)パラメータをコマンドに追加してみてください。

変更時刻は保持されますが、ディレクトリの場合は省略されます。

${RSYNC} -crlOt -e ${SSH} ${LOCAL_DIR} ${REMOTE_Host}:${REMOTE_DIR}

これは私の推測です。ファイルの同期が機能しているようで、エラーはmod時間の同期で発生します。とにかく本当に変更時間を保存する必要がありますか-cオプションは、チェックサムに基づいてファイルをスキップします(したがって、mod時間は関係ありません)。

または、実際には許可の問題です

  • スクリプトを実行しているユーザーには、宛先フォルダーを編集または書き込むための十分な権限がありますか? (ssh -vv test.desktop "touch /dept/intranet/dept/atest/f1/test"をお試しください)
  • スクリプトを実行しているユーザーは "Right One™"ですか(ssh -vv [email protected] "touch /dept/intranet/dept/atest/f1/test"を試してください)

上記のどれでもない

冗長にするには、-vオプションを指定してコマンドを実行します。

26
Brian Clozel

-O-omit-dir-times))をディレクトリに変更時刻を設定しようとするのを避けるためのコマンドライン。

これも読んでください: https://stackoverflow.com/questions/667992/rsync-error-failed-to-set-times-on-foo-txt-operation-not-permitted

5
gavenkoa

私の場合、同期が行われた親ディレクトリに権限を付与することで問題を解決しました。

実際には、親ディレクトリの所有者は、同期を行っているユーザー以外でした。

1
Matías