rsync の --remove-source-files オプションを使用する

rsync の --remove-source-files オプションを使用する

マンページからrsync

--ソースファイルの削除

これは、rsyncに送信側からファイルを削除するように指示します(つまり、ディレクトリではない)それは転送の一部そしてすでに受信側から正常にコピーされました。

  • これは、送信者側のファイルが送信の一部であるか、受信者側で重複していることを意味しますか?

  • 発信ディレクトリも削除できますか?

このオプションは以下でのみ利用可能です。静的ソースファイル

  • 「静的ソースファイル」とはどういう意味ですか?

この機能を使用して特定のディレクトリに表示されるファイルを別のホストに移動する場合は、rsyncが完全に上書きされていないファイルを転送できないように、完了したファイルをソースディレクトリに直接書き込まないで、ソースディレクトリに名前を変更する必要があります。

  • どういう意味ですか?

最初に他のディレクトリにファイルを書き込むことができない場合は、rsyncがまだ完了していないファイルの転送を防ぐことができる命名規則を使用する必要があります(たとえば、ファイルを書き込むときに「foo.new」という名前を付けて「foo」が完了したら、rsync 転送に --exclude='*.new' オプションを使用します。

  • どういう意味ですか?

3.1.0以降、rsyncはファイルサイズや変更時間が維持されない場合は、送信者の削除をスキップしてエラーを印刷します。

  • どういう意味ですか?

ありがとうございます。

ベストアンサー1

Q:これは、送信者側のファイルが転送の一部であるか、受信者側のファイルが重複しているという意味ですか?

  • 答え:両方

Q:発信ディレクトリを削除できますか?

  • 回答:はい
    --remove-source-files
    find <source_directory> -type d -empty -delete次に、ORコマンドを実行します
    find <source_directory> -type l -type d -empty -delete(削除へのシンボリックリンクを含む)。

(以前は:--remove-source-files その後、コマンドを実行rm -rf <source_directory>)


警告する:

OrangeDogのコメントで述べたように、このrm -rf提案は安全ではありません。特に、何らかの理由で転送されていないすべてのファイル(転送リストの作成とそのファイルの実際の転送開始の間で変更されたファイル、受信側のディスク容量不足、ネットワークの切断など)は変更されずにそのまま残ります。 rsyncを介したソースディレクトリ -rm -rf呼び出した後は消えます。上記のコマンドは、空のfindソースツリーを再帰的に削除します。もしすべてのソースファイルは正常に転送および削除されましたが、残りのファイル(もちろん含まれているディレクトリも含む)は保持されません。


Q:「静的ソースファイル」とはどういう意味ですか?

  • A:作成され閉じられたファイルを表します。

Q:この機能を使用して特定のディレクトリにあるファイルを別のホストに移動する場合は、rsyncがドキュメントが完全に作成されていないファイルを転送できないようにソースディレクトリに直接書き込むのではなく、完成したファイルの名前をソースディレクトリに変更する必要があります。 。どういう意味ですか?

  • 答え:上記でも言いました。

Q:ファイルを別のディレクトリに最初に書き込めない場合は、rsyncがまだ完了していないファイルの転送を避けるための命名規則を使用する必要があります(たとえば、書き込み時にファイル名を「foo.new」と指定)。完了したら、名前を「foo」に変更し、rsync 転送に --exclude='*.new' オプションを使用します。どういう意味ですか?

  • 回答:これは、RSYNCが最初に転送するファイルのリストを作成することを意味します。その後、別のディレクトリ(宛先ディレクトリ)に書き込むので、まだ完了していないファイルを転送する場合は、--excludeオプションを使用して完了後に名前を変更するのが最善です。

Q: 3.1.0 以降、rsync はファイルサイズや変更時間が維持されない場合、送信者の削除をスキップしてエラーを印刷します。どういう意味ですか?

  • A:RSYNCがターゲットディレクトリにファイルを書き込んでいる間にファイルをスキャンした時間と実際にターゲットディレクトリに作成された時間の間にファイルサイズが変更されたことを検出すると、RSYNCはファイルをスキップします。

おすすめ記事