次のコマンドは期待どおりに機能しています...
cp -ur /home/abc/* /mnt/windowsabc/
rsync にはそれよりも利点がありますか? 24 時間ごとにバックアップ フォルダーの同期を維持するためのより良い方法はありますか?
ファイル全体ではなく、更新されたファイルの更新された部分のみをコピーするため、Rsync の方が優れています。必要に応じて、圧縮と暗号化も使用します。このチュートリアルをチェックしてください。
rsync が実行するファイルとブロックのより詳細なインベントリのため、rsync は必ずしもより効率的ではありません。アルゴリズムの機能は素晴らしいですが、それが本当に最良の選択になるかどうかを知るには、問題を理解する必要があります。
ファイルが追加されても更新されない傾向がある非常に大きなファイル システム (数千または数百万のファイルなど) では、"cp -u" がより効率的である可能性があります。cp は、メタデータのみに基づいてコピーすることを決定し、単純にコピーのビジネスに取り掛かることができます。
ファイルのサイズ、ネットワークパフォーマンス、その他のディスクアクティビティなどに応じて、ストレート cp ではなく tar を使用するなど、バッファリングが必要になる場合があることに注意してください。次のアイデアは非常に便利です。
tar cf - . | tar xCf directory -
非常に大きな (クラスタ) ファイル システムでは、メタデータ自体が実際にはかなりのオーバーヘッドになる可能性がありますが、rsync と cp はこの問題を共有します。
rsync が好まれるツールであることが多いようです (そして、汎用アプリケーションでは、私の通常のデフォルトの選択です) が、考えずに盲目的に rsync を使用する人はおそらく多いでしょう。
特に、BTRFS や ZFS などのコピー オン ライト ファイルシステムを使用する場合rsyncは、はるかに優れています。
私はBTRFSを使用しており、これを私の中に持っています~/.bashrc:
alias cp="rsync -ah --inplace --no-whole-file --info=progress2"
ここで BTRFS のような CoW FS の重要なフラグ--inplaceは、ファイルの変更された部分のみをコピーし、ファイルの inode 間の小さな変更に対して新しいファイルを作成しないなどです。これを参照してください。
ローカル コピーの場合、rsync の唯一の利点は、ファイルがコピー先ディレクトリに既に存在する場合にコピーを回避できることです。「すでに存在する」の定義は、(a) 同じファイル名 (b) 同じサイズ (c) 同じタイムスタンプです。(おそらく同じ所有者/グループ; よくわかりません...)
「rsync アルゴリズム」は、低速のネットワーク リンクを介したファイルのインクリメンタル アップデートに最適ですが、「diff」計算を実行するために既存の (部分的な) ファイルを読み取る必要があるため、ローカル コピーにはあまりお金がかかりません。
したがって、この種のコマンドを頻繁に実行していて、変更されたファイルのセットがファイルの総数に対して小さい場合は、rsync が cp よりも高速であることがわかるはずです。(また、rsync には--delete便利なオプションがあります。)
rsync はファイル/ディレクトリ全体を最初にのみコピーするため、cp と比較してはるかに優れています。次に同じファイル/ディレクトリで rsync コマンドを使用すると、ファイル全体がコピーされるのではなく、新しい変更のみが宛先フォルダーにコピーされます。