2011-10-27 7 views
13

私は1つの側(A)からのたくさんのファイルや他の場所(B)内の他のファイルがたくさんあるコピーで上書きファイル内容IFなく、同じ

私はBにコピーしています、多くのファイルが同じですが、コンテンツが異なる可能性があります!

通常、私はmc(Midnight Commander)を使用して、「異なるサイズの場合は上書きする」を選択しました。 サイズは同じですが内容が違う場合があります。この場合、mcはファイルをBの場所に保存し、上書きしません。

mc上書きダイアログに「更新」という仕事がありますが、それは何をしているのですか?そのような情報はありませんが、これは解決策ですか?

だから私は、彼らが存在し、コンテンツはA.

「B」場所にファイルが存在する場合と異なっている場合、私は(Bの場所にファイルをAからBにすべてのファイルをコピーして上書きすることができます解決策を探しています同じ名前)と内容が異なる場合は、毎回 "A"の場所からファイルに上書きする必要があります。

解決方法はありますか?あなたはまた、-aの代わりで-rを使用することができます

cp -ru A/* B/ 

がディレクトリBにディレクトリAから再帰的に変更されたすべてのファイル(より最近のタイムスタンプ)をコピーしてください

+0

ところで、すべてのファイルは、プレーンテキストファイル – user1016265

答えて

17

は、コマンドラインを試してみましたあなたが何をしたいかに応じて、コマンドラインを使用します。 cpのマニュアルページを参照してください。

+1

があり、私がソースファイルがリンク先のファイルよりも新しいか先のファイルが が欠落しているときであるとき -u手段のみをコピーする必要があるものだと思われますがどのようなタイムスタンプ、それを探す ?記録タイム ?本当に理想的な解決策ではありませんが、おそらく今のところ最も簡単です。ありがとうございます。 – user1016265

0

書き込み時に作成するファイルのSHA-1ハッシュを保持する、ある種の「インデックス」ファイルを保持したい場合があります。 「ソース」ハッシュを計算し、それをインデックスファイルの「宛先」ハッシュと比較することができます。これは、このプロセスがファイルが宛先に書き込まれる唯一の方法である場合にのみ機能します。

+0

あなたは何か似たようなことができるソフトウェアを知っていますか? 1.ソースファイルツリーのハッシュを作成します。 2.宛先ファイルツリーのハッシュを作成します。 3.それを比較し、変更されたファイルのみをコピーします。 r ight? – user1016265

+0

ではありませんが、opensslライブラリを使って自分自身を書くのは楽しいことですね:) – trojanfoe

9

私はrsyncを使用しますが、これはファイルの日付に依存せず、実際にファイルの内容が変更されているかどうかを確認するためです。たとえば:

#> rsync -cr <directory to copy FROM> <directory to copy TO> 

rsyncのコピーが(それは2つのリモートホスト間でのファイルのコピーをサポートしていません)に、またはリモートホストからのいずれか、またはローカルで現在のホスト上のファイル。

-c, --checksum skip based on checksum, not mod-time & size 
-r, --recursive recurse into directories 

詳細オプションと詳細については、man rsyncを参照してください。

+0

'-c'スイッチがここにあります。私は変更されたタイムスタンプが単にタイムスタンプではなくファイル*の内容*を変更して比較するのを避けたかったのです。ありがとう! – aardvarkk

関連する問題