web-dev-qa-db-ja.com

どのファイルを保持するかをfdupesに伝える方法は?

バックアップに問題があり、HDに何度かフォルダがあります。メインの「フォルダツリー」が1つあり、そのままにしておきたい。 fdupesが削除したくないディレクトリ内のファイルを削除しないようにするにはどうすればよいですか?

別の重複検索ユーティリティはありますか?

1
Nepumuk

別の重複検索ユーティリティはありますか?

rmlint を使用すると、-keep-all-taggedオプションを使用して必要な処理を正確に実行できます。

$ rmlint --types=duplicates --keep-all-tagged /path/to/dupes /other/path/to/dupes // main/folder/tree
1
thomas_d_j

これは、最初に指定されたディレクトリに優先順位を付けるための短いスクリプトです。ファイルを直接削除するのではなく、削除するリストを印刷するだけです。次のルールに従います。

  1. dir1からファイルを印刷しないでください
  2. dir1にないファイルがある場合は、印刷しないでください。

    #!/usr/bin/env bash
    # priority_dup.sh dir1 dir2 [dir3 ...]`
    
    set1=() # List collects all matching files for a set.
    IFS=$'\n'
    fdupes -r "$@" | while read i; do
        if [[ "$i" == "" ]]; then
            # Create new set, minus all files from dir1.
            set2="$(echo "${set1[*]}" | grep -v "^$1/")"
            # If the sets are different, then we can print files for deletion.
            if [[ "${set1[*]}" != "$set2" && "$set2" != "" ]]; then
                echo "$set2"
                echo ""
                set1=()
            fi
        else
            set1+=("$i")
        fi
    done
    

    ファイルに保存し、ファイルを実行可能ファイルとして設定して、試してみてください。

1
Rucent88

プロセスを遅くして、注意してみませんか

fdupesから重複の比較を取得し、ファイルに入れます。

fdupes -r /path/to/start > filesToDelete

次に、自分の速度で、保持したいディレクトリまたはファイルをfilesToDeleteから削除できます。

ディレクトリ全体を削除するには

sed -i '|/directoryToKeep/|d' filesToDelete 

好みのテキストエディタでfilesToDeleteを操作し、必要な各ファイルのコピーの先頭にマーカー(おそらくx?)を配置しますkeepこれにより、何を追跡できるようになります。あなたがやった、そしてあなたが変更を確信しているとき

cat aFile | xargs -d "\n" rm

rmは、xの付いた各行(およびfdupesによって生成されたコメントやその他の行)でエラーをスローしますが、これらのファイルには何もしません。ただし、filesToDelete内のマークされていない有効なファイル名エントリはすべて削除されます。

1
bu5hman