2016-10-13 4 views
-2

rsyncを使用して大きなディレクトリをNASにコピーする必要があります。すでにコピーされたファイルのコピーを避けるため、rsyncはソースと宛先が異なる場合にのみファイルをコピーします。ファイルが異なるときにrsyncでコピーする

答えて

1

なぜ同じファイルをスキップするのは、人々がrsyncを使う理由の全体です。これはrsyncのデフォルト動作です。唯一のオプションは、あなたが使用したい時間のほとんどは-aです:

rsync -a -P <source> <dest> 

-Pだけで進行状況を表示意味と-aは、「アーカイブ」を意味し、それは、ファイルをコピーする場合、可能な限り同一のものとしてコピーを作成してみてください」という意味します"(アクセス許可、所有権、タイムスタンプなどを保持しようとする)、また、"必要な場合にのみファイルを更新する "という意味です。 「<dest>が最新のバックアップ<source>であることを確認する」のようなものです。

しかし、デフォルトではrsyncは、ファイルサイズが同じで最終変更日が同じ場合、すでに2つのファイルが同一であるとみなします。もちろん、2つのファイルも同じサイズと同じ最終変更日を持ち、同一ではない場合があります。だから、非常に最初の時間のためにそのコマンドを実行すると、あなたは更新を必要とする可能性があるファイルやものが、これはしようとしないかわからないとき:

rsync -a -c -P <source> <dest> 

-c手段は、単にサイズと日付、チェックサムに依存しませんすべてのファイルをチェックサムを比較します。チェックサムが同一である場合のみ、ファイルを同一と見なします。 rsyncはファイル全体をチェックサムする必要はないことに注意してください。大きなファイルは小さなチャンクに分割され、変更されたチャンクだけが転送されるため、すべてのチャンクは個別にチェックサムされます。

このようにチェックサムを設定しても、ネットワーク接続を介してコピーするときに多くの時間を節約できます。ローカルにコピーするときは、すべてをコピーするだけですべてのチェックサムを行うよりもおそらく速いので、いつでも保存することはできません。したがって、ソースと宛先の両方がローカルドライブである場合、プレーンコピーは常にチェックサムrsyncを速度で上回ります。その場合には

cp -a -v <source> <dest> 

を使用するか、あなたのシステムが-aを知らない場合、-aと同じだ

cp -pPR -v <source> <dest> 

を使用しています。再び、-vはちょうどいくつかの進歩を見ることです。

そして最初の同期には-cしか使用しません。その後、ファイルサイズと最終更新日に依存して更新するのが通常とてもうまくいきます。最後の同期以降にファイルが変更された場合、最後の変更日が異なるため、rysncはファイルを宛先で更新する必要があることを知るだけです。もちろん、それはあなたのシステムの日付/時刻が正しく設定されていて、ファイルの最終更新日を操作しておらず、あなたのシステムがそれらを更新することを禁じていない場合にのみ機能します。

あなたはこれを使用、単に存在にファイルをスキップする場合:

rsync -a -P --ignore-existing <source> <dest> 

あなたが先に同じ名前のファイルが表示されている場合は、常にそれが同一であることを考える」のrsyncを伝えるようなものだとは決してそれを更新する "。あなたは、端末に

man <command> 

を入力した場合だけで、一般的なヒントとして


、あなたは、ほとんどのシステム(Linuxでは、MacOSのXおよびUNIXシステム)での素敵なヘルプページを取得するあなたのすべてを説明しますすべての詳細のオプション。矢印キーまたはページ上/下を使用して上下にスクロールすることができます。終了するには「q」を押してそのビューを離れることができます。例えば。

man rsync 
+0

私は、あなたが正しくファイルをコピーしなかった存在 – Paul

+0

@Paulすでに私は再コピーせずにファイルが、のrsyncの送迎ファイルを続けたい... CPを使用して、私のディレクトリをコピーし始めました。あなたは 'cp -a'でそれらをコピーしたはずです。もしあなたのシステムがそのフラグを知らないなら、' cp -pPR'はほとんどのシステムで同じことをします。コピー時にファイルが変更日を保持するようにします。そうすれば 'rsync'は日付テストだけでスキップします。存在するファイルをスキップするには、ファイルの内容をチェックサムなしでサイズ/日付をチェックしないで '--ignore-existing'を使います。 – Mecki

+0

私はすでに '--ignore-existing'を試しましたが、いくつかのファイルは不完全であり、それらをスキップします。 – Paul

関連する問題