어떤 파일을 보관할지 fdupes에 어떻게 알릴 수 있나요?

어떤 파일을 보관할지 fdupes에 어떻게 알릴 수 있나요?

백업에 문제가 있어서 이제 하드 드라이브에 폴더가 너무 많아졌습니다. 그대로 유지하고 싶은 기본 "폴더 트리"가 있습니다. fdupes가 삭제하고 싶지 않은 디렉터리의 파일을 삭제하지 못하도록 하려면 어떻게 해야 합니까?

또 다른 중복 찾기 유틸리티가 있나요?

답변1

또 다른 중복 찾기 유틸리티가 있나요?

사용린트--keep-all-tagged 옵션을 사용하여 원하는 작업을 정확하게 수행합니다.

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

답변2

진행 속도를 늦추고 좀 더 주의를 기울이는 것이 어떨까요?

그것으로부터 중복된 내용을 비교하여 fdupes파일에 넣으십시오.

fdupes -r /path/to/start > filesToDelete

그런 다음 자신의 속도에 맞춰 유지하려는 디렉터리나 파일을 삭제할 수 있습니다.filesToDelete

전체 디렉토리 삭제

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

즐겨 사용하는 텍스트 편집기에서 작업을 완료 filesToDelete하고 만들고 싶은 각 파일의 복사본 시작 부분에 표시(아마도 x?)를 추가하세요.유지하다이렇게 하면 수행한 작업을 추적한 다음 발생한 변경 사항을 식별할 수 있습니다.

cat aFile | xargs -d "\n" rm

rmx가 있는 모든 줄(및 x에 의해 생성된 모든 주석 또는 기타 줄)에 오류가 발생 fdupes하지만 이러한 파일에서는 아무 작업도 수행되지 않습니다. 그러나 .txt 파일에서 태그가 지정되지 않은 유효한 파일 이름 항목을 모두 제거합니다 filesToDelete.

답변3

다음은 주어진 첫 번째 디렉토리의 우선순위를 지정하는 짧은 스크립트입니다. 파일을 직접 삭제하지 않고 삭제할 목록만 인쇄합니다. 다음 규칙을 따릅니다.

  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
    

    파일에 저장하고 파일을 실행 가능하게 만든 다음 실행하여 사용해 보세요.

관련 정보