ターゲットでのrsyncおよび書き込み権限


8

なぜrsyncファイルをリモートディレクトリに転送しようとするのか、そのファイルがターゲットディレクトリに対する読み取り/実行権限を持っているのに、実際の宛先ファイルを作成するための書き込み権限がないのかと、いつも疑問に思いました。通常のユーザーとしてにファイルをコピーしようとするとき、これはでも、ローカルにシミュレートすることができます/rsyncファイル全体を転送する(また、大きなファイルのためにかなり時間がかかる)、最後で失敗します

rsync: mkstemp "/.myTargetFile" failed: Permission denied (13)

そのため、転送中に一時ファイル(ドットファイル)を作成しようとすると、起動時にすでに失敗しているようです。書き込み権限がないのにファイル全体をコピーしようとせずに、これに気づかずに早期に中止しないのはなぜですか?

一時ファイルを作成できない場合、ファイルはどこにコピーされますか?rsyncプロセスのメモリの増加が見られず、/ tmpに対応するファイルもありません。それは宛先でデータを直接破棄するようですが、それでも転送を続けます。

回答:


5

書き込み権限のないディレクトリにコピーする必要がある場合は、--inplaceコマンドオプションに追加します。これは、一時的なコピーを作成しない場合より安くなることがありますが、更新中はファイルの状態が不整合になります。

自分の権利を事前にチェックしない理由については、拡張アクセスACLとしていくつかの追加の詳細を見逃す可能性があるため、rsyncは標準の3 * 3 + 3スキームを信じていません。OTOHこの意図的なポリシーでは、結果に実際の違いはありません-とにかくファイルは更新されません。


お返事ありがとうございます。これはあいまいな推測であり、私の質問には実際には回答しません。でも、と--inplaceそれは書き込み権限がないことに気付いまで、ファイル全体を転送します。
scai

1
これはOPのヘルプには答えません--inplaceが、ファイルへの書き込み権限を持っているが、それを含んでいるディレクトリではない場合に使用すると非常に便利です。
tokland 2017年

しかし、それが私の解決策でした(tmp-filesを生成しましたが、元の名前に名前を変更しませんでした)。そのため、感謝します
roothahn

4

これは、バグ追跡で説明されているように、現在のrsyncプロトコルの欠点のようです。rsyncプロトコルは、ターゲットに書き込み権限があるかどうかを事前に判断できません。代わりに、送信して、後で成功または失敗を確認します。


2

Rsyncはターゲットファイルと同じフォルダーに一時ファイルを作成するため、この場合は/rootとして起動せず、通常/はrootのみが書き込み可能であるため、いくつかのファイルをにコピーする必要があるため、失敗します。

コピーされているファイルを確認するには、パラメータを渡します -v


1
rsyncターゲットディレクトリと同じフォルダーに一時ファイルが作成されることを知っています。しかし、それは、これらの一時ファイルにそれを作ることができない場合でも、敷居が転送を開始し、失敗し、その後、それは必要なすべての書き込み権限を持っている場合は代わりに右の先頭にチェックします。なぜそのように振舞うのか知りたい。
scai
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.