별도의 디렉토리에 중복되지 않은 파일을 찾는 방법

별도의 디렉토리에 중복되지 않은 파일을 찾는 방법

오래된 문서 백업이 있습니다. 내 현재Documents 디렉터리에는 이러한 파일이 많이 존재합니다.다른 이름으로 다른 위치에. 백업에 어떤 파일이 있는지 표시하는 방법을 찾으려고 합니다.~ 아니다에 존재하다Documents , 쉽게 개요를 볼 수 있도록 멋지고 GUI적인 것이 좋습니다.많은문서의.

이 질문을 검색해 보니 많은 사람들이 그 반대의 방법을 찾고 있습니다. 와 같은 도구가 있습니다.FSlint그리고DupeGuru, 그러나 중복된 항목이 표시됩니다. 반전 모드가 없습니다.

답변1

CLI를 사용할 준비가 되면 다음 명령이 작동할 것입니다.

diff --brief -r backup/ documents/

그러면 각 폴더에 고유한 파일이 표시됩니다. 원하는 경우 다음을 사용하여 파일 이름 대소문자를 무시할 수도 있습니다.--ignore-file-name-case

예로서:

ron@ron:~/test$ ls backup/
file1  file2  file3  file4  file5
ron@ron:~/test$ ls documents/
file4  file5  file6  file7  file8
ron@ron:~/test$ diff backup/ documents/
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Only in documents/: file6
Only in documents/: file7
Only in documents/: file8
ron@ron:~/test$ diff backup/ documents/ | grep "Only in backup"
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3

또한, 파일이 다른 경우에만 보고하고 실제 '차이'는 보고하지 않으려면 다음 --brief과 같이 옵션을 사용할 수 있습니다.

ron@ron:~/test$ cat backup/file5 
one
ron@ron:~/test$ cat documents/file5
ron@ron:~/test$ diff --brief backup/ documents/
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Files backup/file5 and documents/file5 differ
Only in documents/: file6
Only in documents/: file7
Only in documents/: file8

meld동일한 작업을 수행할 수 있는 여러 가지 시각적 비교 도구가 있습니다 . meld다음 방법으로 유니버스 저장소에서 설치할 수 있습니다 .

sudo apt-get install meld

"디렉터리 비교" 옵션을 사용하세요. 비교하고 싶은 폴더를 선택하세요. 선택한 후에는 나란히 비교할 수 있습니다.

여기에 이미지 설명을 입력하세요

fdupes는 중복 파일을 찾는 데 탁월한 프로그램이지만 귀하가 찾고 있는 중복되지 않은 파일을 나열하지는 않습니다. 그러나 및 fdupes의 조합을 사용하여 출력 에 없는 파일을 나열할 수 있습니다 .findgrep

다음 예에서는 에 고유한 파일을 나열합니다 backup.

ron@ron:~$ tree backup/ documents/
backup/
├── crontab
├── dir1
│   └── du.txt
├── lo.txt
├── ls.txt
├── lu.txt
└── notes.txt
documents/
├── du.txt
├── lo-renamed.txt
├── ls.txt
└── lu.txt

1 directory, 10 files
ron@ron:~$ fdupes -r backup/ documents/ > dup.txt
ron@ron:~$ find backup/ -type f | grep -Fxvf dup.txt 
backup/crontab
backup/notes.txt

답변2

매우 큰 파일이 많이 있는 경우에도 동일한 문제가 있었고 중복에 대한 솔루션은 많지만 반전 검색에 대한 솔루션은 많지 않으며 데이터 양이 많기 때문에 콘텐츠 차이점을 검색하고 싶지도 않았습니다.

그래서 저는 "격리된 파일"을 검색하기 위해 이 Python 스크립트를 작성했습니다.

isolated-files.py --source folder1 --target folder2

이렇게 하면 폴더1에 없는(재귀적으로) 폴더2 내의 모든 파일이 (재귀적으로) 표시됩니다. SSH 연결 및 여러 폴더에서도 사용할 수 있습니다.

보다https://github.com/ezzra/isolation-files

답변3

나는 오래된 백업을 다른 이름으로 다른 디렉터리에 보관된 수천 개의 파일과 병합하는 가장 좋은 작업 흐름은 다음을 사용하는 것이라고 생각했습니다.dupeGuru결국. 그것은 많이 닮았다중복탭에서FSlint, 그러나 소스를 다음과 같이 추가하는 중요한 기능이 있습니다.'참조'.

  1. 대상 디렉토리(예 ~/Documents: )를참조.
    • 참조읽기 전용이므로 파일이 제거되지 않습니다.
  2. 백업 디렉터리를 다음과 같이 추가하세요.정상.
  3. 중복된 항목을 찾아보세요. 백업에서 발견된 모든 중복 항목을 제거합니다.
  4. 백업 디렉터리에는 고유한 파일만 남습니다. 사용FreeFileSync또는융합이를 병합하거나 수동으로 병합합니다.

이전 백업 디렉터리가 여러 개 있는 경우 먼저 이와 같은 최신 백업 디렉터리를 병합한 다음 이 백업 디렉터리를참조기본 문서 디렉터리에 병합하기 전에 이전 백업의 중복 항목을 정리합니다. 이는많은백업에서 병합하는 대신 휴지통으로 옮긴 고유 파일을 제거할 필요가 없는 작업입니다.

프로세스에서 이전 백업을 모두 삭제한 후 새로 백업하는 것을 잊지 마세요. :)

답변4

jdupes이에 대한 두 가지 유용한 옵션이 있습니다: -I --isolate-u --print-unique.

예를 들어, 디렉토리에 있는 고유한 파일만 나열하려면 다음을 수행하십시오 backup.

jdupes -Iru Documents backup |grep '^backup

관련 정보