
rsync
一部のソースコードをコピーしようとしました。コピーされたコードは、コードの編集中に間違いがあるため、ターゲットの場所で変更しないでください。そのため、--chmod=u-w
コピーした後にのみ読み取れるようにフラグを設定しました。
rsync --delete -a --chmod=u-w
最初のものはうまくいくということです。ただし、2番目からターゲットはrsync
読み取り専用であるため、コピーはできません。
rsync: delete_file: unlink "/path/file1" failed: Permission denied (13)
rsync: delete_file: unlink "/path/file2" failed: Permission denied (13)
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-42/rsync/main.c(992) [sender=2.6.9]
rsync
読み取り専用でも書き込み可能でも、すべてのファイルを強制的に上書きする機能があると思います。
どうすればいいですか?
答え1
コピーしたコードは目的地で変更しないでください。
エラー:コピーされたファイルは、次にrsyncが実行されたときにターゲットで修正する必要があります。 Unix 権限は、専用ユーザーとして rsync ジョブを実行しない限り、「rsync でのみ変更可能」を表現することはできません。
Rsyncは、そのファイルを含むディレクトリが読み取り専用であるため、そのファイルを削除できません。これを防ぐには、通常のファイルにのみ適用するF
プレフィックスを追加してください。--chmod
rsync --delete -a --chmod=Fa-w
ファイル権限を変更しないと、より良いサービスを受けることができます。ファイルへの読み取り専用アクセスを提供する必要がある場合は、rsyncジョブを専用ユーザーとして実行し、他のユーザーにディレクトリツリーへの読み取り専用アクセスを許可します(役に立つ場合があります--chmod=go-w
)。または、読み取り専用ビューにディレクトリツリーを公開します。ファイルシステムバインディング(望むよりこの回答さまざまなシナリオの使用例)。