old
2 つの大きなディレクトリ ツリー、と がありますnew
。ほとんどのファイルは同じですが、一部のファイルは異なっており、古いバージョンでは欠落しています。次のファイルを含む tar ファイルを自動的に作成する方法を見つけたいと思います。a
) に含まれnew
ていて に含まれていないすべてのファイル、b)とold
の間で異なるすべてのファイルnew
old
にのみ存在するファイルはold
無視する必要があります。シンボリック リンクは維持する必要があります。「異なる」
かどうかは、完全なバイナリ比較によって判断する必要があります。ご想像のとおり、私は 1 つのツリーを別のツリーと一致させるためのパッチを作成しようとしています。これを行うツールが既にあるか、またはいくつかのコマンドを連結する必要があるかもしれません。
私は Ubuntu Linux で作業しています。
答え1
いくつかのアイデアを見つけましたこの郵便受け異なるファイルのリストを取得する方法について。私は以下の--dry-run
オプションを使用して rsync アプローチを採用しました:
rsync -rv --dry-run --size-only --links old/ new/
ファイルのリストができたら、それらのファイルで tar を呼び出しました。これでは、1 つの場所と他の場所にあるファイルを区別する問題が完全に解決されたわけではありませんが、手動で介入することで、うまく機能するようになりました。完全に自動化されたソリューションにたどり着けたらよかったのですが、これらの一般的な手順で当面の問題を解決することができました。