2017-06-11 4 views
0

ソースシステムでTEST.csvというファイルがある状況があります。そのファイルを私の宇宙ステーションのシステムで同期させたい。 TEST.csvで新しいデータが追加されたり、古いデータが変更されたりすると、宛先システムのファイルも変更されます。 ソースシステムはrsyncにしか公開されていないため、rsync以外のプロトコルは使用できません。 TEST.csvの変更部分だけを別途取得したいと思います。 どうすればいいですか?rsyncでファイルの異なる部分だけを見つけ出す

+0

私の答えはあなたを助けることができましたか? – EmilioMg

答えて

0

私が正しく理解していれば、ファイル全体ではなくTEST.csvの変更部分のみを転送したいのですが、そうですか? そのような場合は、これを行うことはできません。これはストレートman rsyncの外にある:

The rsync remote-update protocol allows rsync to transfer just the differences between two sets of files across the network connection, using an efficient checksum-search algorithm described in the technical report that accompanies this package.

キー部分はusing an efficient checksum-search algorithmある - それは、ローカルとリモートのファイルに対してチェックサムを実行し、チェックサムが異なる場合、それはソースからターゲットにファイルを転送します。チェックサムに基づいて、ファイルのどの部分が変更されたかを知り、差異だけを転送する方法はありません。


ローカルバージョニングツールを使用することができます。 git、そのツールを使用して同期サイクル間の差分を取得します。差分があれば、ファイルに保存してrsync経由で転送し、にこの差分を適用するには、ターゲット側のpatchユーティリティを使用します。

gitは、あなたが新しい変更で古いTEST.csvと新しいTEST.csvを追跡し、それに対してdiffを実行する必要がデフあなたがソースのシンプルdiff -uとターゲット上patchを使用することができますが、使用するために、必要とされていません。 gitでは、あなたが望むツールでファイルを編集するだけで、gitはその内部メカニズムを使って変更に対する正しいdiffsetを作成します。差分が転送された後に変更を追加してコミットすることを忘れないでください。次のサイクルでは、独自の変更のみで次のサイクルが明確な差分を作成できます;-)

関連する問題