大きなディレクトリを繰り返し比較しますが、サブディレクトリは無視します。 2つのバックアップを比較します。 GUIを使用してください。

大きなディレクトリを繰り返し比較しますが、サブディレクトリは無視します。 2つのバックアップを比較します。 GUIを使用してください。

私は友人のコンピュータの2つの非常に古いバックアップを持っています。単に外付けハードドライブのすべてのフォルダにコピーされます。どちらもサイズが約300GBで、内容は非常に似ていますが、同じではなく、フォルダ構造も異なります。そのスペースを確保し、両方のスペースをバックアップしたいと思います。ファイルの90%程度が重複だと思いますが、重複していないファイルも見逃したくありません。

したがって、両方のディレクトリとすべてのサブディレクトリのファイルを比較しますが、そのサブディレクトリには無視するプログラムが必要です。フォルダAのすべてのファイルは、フォルダBのすべてのファイルと比較する必要があります。フォルダBのすべての重複項目は表示/移動(/削除)する必要があります。残りはフォルダBで手動で処理します。

私はメルドを試してみましたが、Gnome-Commanderも試しました。 (私はXFCEでXubuntuを使用します)

私はGUIソリューションを好みますが、端末とスクリプトも処理できるはずです。私は両方のファイルのリストを作成し、それをいくつかのdiffプログラムにパイプすることが可能になると思いますが、それを正確に行う方法は私の能力を超えています。

まあ、Turtle Purpleの回答を楽しみにしています。

ベストアンサー1

ファイルの内容を保存する(データ損失を防ぐ)ことが目標である場合は、ファイルディレクトリの命名ではなくファイル平等に焦点を当てます。

まず、各最上位フォルダでこのコマンドを実行してから、出力を保存します(しばらく実行されます!)。

find FolderA -type f -print0 | xargs -0 cksum > FoldA.cksum
find FolderB -type f -print0 | xargs -0 cksum > FoldB.cksum

同じファイル内容が一緒になるように、両方の出力を一緒にソートします。その後、awkの作成を開始し、最初の2つのフィールド(チェックサムとサイズ)に基づいて同じコンテンツをグループ化します。

(a)単一行グループのみが保存されるファイル。
(b) 大きいグループは同じファイルのリストです。一番上の名前を保持し、別の名前を削除リストに記録することをお勧めします(この名前は、AとBの間、A内、B内、またはその両方内で重複する可能性があります。

すべての重複ファイルは「FolderA」名にのみ存在し、固有ファイルの約半分も「FolderA」名にあります。 FolderBで選択したファイルのコピーをどのように処理しますか(残りのコンテンツをマージする必要があるとします)。

そのパス名(FolderBから最も低いディレクトリまで)がFolderAにある場合は、別の出力リストを介してパス名をそのパスに移動する必要があります。

FolderAにそのパス名が存在しない場合、実際にどこに属しているかを推測することはできません。適切なディレクトリ(およびすべての親ディレクトリ)を作成し、それを失う危険性があるかどうか、または他の場所に対応するかどうかを監視できます。

これらの最後のステップはすべて追加の確認が必要です。同じ名前の2つ以上の異なるファイルがある可能性があります。この場合は、いくつかの回避策(常に高いバージョンを維持する)を選択するか、ファイル名を拡張して一意にするか、各ケースを個別に確認する必要があります。

私のアプローチは、このステップを段階的に実行することです。まず、正確な冗長ファイル(90%推定)を処理し、残りを調整するために使用できるパターンの違いを評価します。

おすすめ記事