2つのフォルダをマージするオプションを探索しながら、私は次の非常に強力なツールを見つけました。リント。何か役に立つものがあります文書(そして滑らかな地図)。
以前はシナリオに言及しましたが、いくつかの素晴らしい答えを受けました。
チェックサムの違いを維持しながら、1つのフォルダから同じファイルを削除するように2つのフォルダをマージする方法は?
私はrdfind
その答えに向かって傾いていましたが、調査中に偶然に開発rmlint
者の意見を見つけました。議論する繰り返し分離に関する問題は非常に明白です。
これらすべてを見直して、私はいくつかの興味深い主張を見つけました。
--merge-directories --honour-dir-layout
だから私は次のマントラを試しました。
rmlint -T "bi,bl,df,dd" --progress --merge-directories --honour-dir-layout A B
残念ながら、私の大きなシーンで実行しようとしている保存されたコマンドはかなり大きく、これまで実行する前にある程度の信頼性を構築するためにテストするために管理可能な小さなサブセットを分離することはできませんでした。スクリプトとして表示するのではなく、実行するタスクを印刷できるようにテスト実行を実行して実行するタスクをシミュレートする方法を見つけようとしましたが、見つかりませんでした。オプション(たぶん私はただ目が充血して絶望に陥って無視しているのかもしれません。)
だから私はこれについて次のような質問を提起でき、提起しなければならないと思います。
冗長データセットを正常にマージした人はいますかrmlint
?それでは、以前の質問の目標を合理的に満たすために、2つのフォルダをマージするためにどのパラメータを使用することをお勧めしますか?
簡単に繰り返すと、最終目標は、Bに固有のすべてをAに入れると同時に、Aに既に存在するすべてをBから削除し、AとBの間にデータコンテンツの競合(つまり、一意でないコンテンツ)を持つすべてのコンテンツを削除します。することです。 move 両方とも手動比較のために保持されるため、実行後に B で比較的簡単に見つけることができます。
答え1
実際rmlint
よりも作業に適しているようですrdfind
。実際に意図しない操作を実行していないことを確認できるシェルスクリプトを出力することが好きです。
あなたのユースケースについて、私はマニュアルで以下を議論するセクションに魅了されました。元のディレクトリを表示、明らかに「オリジナル」ディレクトリと「冗長」ディレクトリがあるからです。
この例では、これを開始点として使用できるようです。
# Find all files on /media/portable that can be safely deleted:
$ rmlint --keep-all-tagged --must-match-tagged /media/portable // ~
元のディレクトリは後ろに、私は少し//
驚きました(基本的にこのツールはファイルを次の場所に保存することを好むようです)。より早い議論)。だからrmlint --keep-all-tagged --must-match-tagged B // A
。
(注:個人的な経験はなくrmlint
、文書のみ参照しました。)