CDベースの増分パッチによる2つのフォルダの同期

CDベースの増分パッチによる2つのフォルダの同期

毎週更新され、CD経由で提供されるデータフォルダはリモートPCにあります。

このフォルダはほとんど.jarバイナリファイルです。おそらく200個程度で、総サイズは約350Mbです。

毎回データの小さな部分(通常約5%)のみが変更されます。

まったく新しいバージョンのデータフォルダを提供する代わりに、デルタを送信したいと思います。

diffこれを行う最善の方法はLinuxコマンドですか?生成されるパッチファイルのサイズは350Mbに近いように見えるため、サイズは節約されません。

特定のファイルに変更を送信することを心配することなく、完全な代替ファイルを送信することを嬉しく思います。

これを実行できる他の適切なLinuxツールはありますか?

答え1

git bundleそれはうまくいくようなもののようです。

時間が経つにつれて、リポジトリの変更を示すファイルを作成し、それをCDに書き込んでリモートコンピュータに転送できます。その後、これらの変更をリモートの場所に適用できます。

はい

マシンAのリポジトリR1からマシンBの他のリポジトリR2に記録を転送すると仮定する。何らかの理由でAとBの間の直接接続は許可されていませんが、いくつかのメカニズム(CD、Eメールなど)を介して可能です。 R1のマスターブランチで開発された内容でR2を更新できることを願っています。

gitバンドルのドキュメントは次のとおりです。ここ

答え2

この要件を満たすことはできますが、rsync --write-batch=FILE350MBのコンテンツのみをCDに送信するのはやや過度のようです。 (基本的に150MBを送っても350MBを送っても構いません。でもCDが必要です。)

この方法で使用するには、着信rsync変更ファイルと比較できるように、データフォルダのローカルコピーを維持する必要があります。チェンジセット出力は、FILEリモートPCターゲットに書き込まれてからリモートPCターゲットにも適用できますrsync --read-batch=FILE

より良いアドバイスは、ファイルの変更日時とサイズを使用して、コレクション内のどのファイルが更新されたかを確認cpし、CDからそのファイルをコピーすることです。

cp -u -r --preserve=timestamps /media/CD /path/to/target/folder

ここのフラグは-uソースの最新のファイルのみを更新し、両方のフラグを組み合わせるとディレクトリツリー全体が考慮され、コピーされた-r --preserve=timestamps各ファイルがそのタイムスタンプを維持することが保証されます。

関連情報