Bashを使用すると、名前は同じですが、ソースの内容が異なるいくつかのファイルをコピーして上書きし、同じファイルを無視する必要があります。
cp
マニュアルに他のファイルをコピーするオプションは表示されません。
まず、「更新」オプションを試してみましたが、元のファイルcp
からターゲットに古いファイルをコピーしません。
cp -a -u SOURCE DESTINATION
そのパラメータを削除すると、-u
すべてのファイルが正しくコピーされますが、不要なコピーは避けたいと思います。
次のようなものが必要です。
- ターゲットがソースと異なる場合は、ソースファイルをコピーする必要があります。
- 場合によっては、ターゲットがソースよりも最新の場合があります。それでもコピーは必要です。
- ソースファイルとターゲットファイルは同じ場合にのみ無視する必要があります。
どうすればいいですか?
答え1
cp
ファイルの内容は比較されず、タイムスタンプのみが比較されます。
代わりに使用してくださいrsync
:
rsync -acv SOURCE/ DEST/
より少ない出力を得るには、このv
フラグを削除してください。
答え2
利用可能な多くのチェックサムコマンドのいずれかを適用できます。この単純なケースでは、単純なアルゴリズムで十分です。チェックサムが等しく比較されると、2つのファイルが同じである可能性が高くなります。