2016-09-10 10 views
0

2つの大きなディスクを同期する必要がありますが、1つずつアクセスできます。だから私は、2つのステップでプロセスを分割する必要があります。地元の小さなディスク上sourceから一度に1つだけにアクセスできる2つのディスクを同期する

  1. (のみ)を保存違い
  2. destinationに適用します。

destinationの現在の状態をファイルに保存して、小さなディスクに違いをコピーすることはできますか? rsyncやその他のツールを使用していますか?

のような何か:

# on `destination` disk: 
rsync <magic option> -o "status_file.delta" destination/ 

# `source` to `temporary`: 
rsync <magic option> -i "status_file.delta" source/ temporary/ 

# `temporary` to `destination`: 
rsync -a temporary/ destination/ 

ありがとう!

答えて

0

はい!しかし、ソースディスク上には2つのデータコピーが必要です:1つは現在のもの(ソース)で、もう1つは宛先の状態と一致します。

  1. 同期秒のコピーを元と変更内容を記録:

    rsync -a --write-batch=temporary/delta source/ source2/ 
    

    sourcesource2は現在一致している必要があり、あなたはdeltaという名前のファイルを持っている必要があります。

  2. スワップディスクは、先に変更を適用します。

    rsync -a --read-batch=temporary/delta destination/ 
    

    sourcesource2、およびはずですすべて試合destination

その後、sourceに変更を加えることを続けることができますが、あなたがdestinationに同期した後、次回までsource2を変更しないでください。

+0

ありがとう、それは面白いですし、私はそれを知らなかった。 残念ながら、私は元のディスクにデータの二重コピーを作成することができないので、私のケースに合っていません。 Rsyncは、問題を解決するためのすべての手段を提供しています(バッチ、 '--ignore-times'と' --checksum'を使用してヒューリスティックを細かく制御します[http://serverfault.com/questions/211005/rsync-difference -checksum-and-ignore-times-options])、現在の状態を保存する可能性が失われます。 – Emilio

+0

BTRFSなどのコピーオンライトファイルシステムを使用するようにソースディスクを切り替えると、コピーにはほとんどディスクスペースがほとんど使用されません。 – ams

0

rsyncでは、一度に両方の完全なデータセットを表示する必要があることを考慮すると、別の解決策が必要です。

  1. スキャン独立データ、送信元と送信先の両方のセット、::

    find source/ -type f -print0 | xargs -0 md5sum > temporary/source-signatures 
    
    find destination/ -type f -print0 | xargs -0 md5sum > temporary/destination-signatures 
    
  2. 差分2つの署名ファイルあなたはこの簡単に十分な、通常のUNIXコマンドを使用して行うことができます。

    diff -u destination-signatures source-signatures > sync-diff 
    
  3. オプション削除されたファイルを削除するスクリプトを生成します。

    grep '^-' sync-diff | xargs echo rm > delete.sh 
    
  4. 変更されたファイルのキャプチャ:インストール先のディレクトリにdelete.shスクリプトを実行し、慎重に

    grep '^+' | sed 's/.* //' | xargs tar Af file.tar 
    
  5. をファイルを正しく配置するようにtarファイルを展開します。

名前にスペースや特殊文字を含むファイルがある場合は、削除スクリプトとtarプロセスにさらに注意する必要があります。特に、xargsは仕事をしません。

関連する問題