毎週更新され、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=FILE
350MBのコンテンツのみを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
各ファイルがそのタイムスタンプを維持することが保証されます。