fdupes-Linux에서 중복 파일을 찾고 삭제하는 명령 줄 도구
대부분의 컴퓨터 사용자가 중복 파일을 찾아서 바꾸는 것은 일반적인 요구 사항입니다. 중복 파일을 찾아서 제거하는 것은 시간과 인내가 필요한 지루한 작업입니다. 'fdupes'유틸리티 덕분에 컴퓨터가 GNU/Linux로 구동되는 경우 중복 파일을 찾는 것은 매우 쉽습니다.

Fdupes는 Adrian Lopez가 MIT 라이센스에 따라 릴리스 된 C 프로그래밍 언어로 작성한 Linux 유틸리티입니다. 애플리케이션은 지정된 디렉토리 및 하위 디렉토리 세트에서 중복 파일을 찾을 수 있습니다. Fdupes는 파일의 MD5 서명을 비교 한 후 바이트 간 비교를 통해 중복을 인식합니다. Fdupes와 함께 많은 옵션을 전달하여 파일을 나열, 삭제 및 중복에 대한 하드 링크로 바꿀 수 있습니다.
비교는 다음 순서로 시작됩니다.
크기 비교> 부분 MD5 서명 비교> 전체 MD5 서명 비교> 바이트 간 비교.
Linux에 fdupes 설치
Ubuntu 및 Linux Mint와 같은 Debian 기반 시스템에서 다음 명령을 실행하는 것만 큼 쉽게 최신 버전의 fdupes (fdupes 버전 1.51)를 설치할 수 있습니다.
$ sudo apt-get install fdupes
CentOS/RHEL 및 Fedora 기반 시스템에서 fdupes 패키지를 설치하려면 epel 저장소를 켜야합니다.
# yum install fdupes # dnf install fdupes [On Fedora 22 onwards]
참고 : 기본 패키지 관리자 yum은 Fedora 22부터 dnf로 대체됩니다.
fdupes 명령을 사용하는 방법?
1. 데모 목적으로 다음과 같이 디렉터리 (예 : tecmint) 아래에 몇 개의 중복 파일을 만듭니다.
$ mkdir /home/"$USER"/Desktop/tecmint && cd /home/"$USER"/Desktop/tecmint && for i in {1..15}; do echo "I Love Tecmint. Tecmint is a very nice community of Linux Users." > tecmint${i}.txt ; done
위의 명령을 실행 한 후 ls 명령을 사용하지 않고 중복 파일이 생성되었는지 확인합니다.
$ ls -l total 60 -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint10.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint11.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint12.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint13.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint14.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint15.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint1.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint2.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint3.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint4.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint5.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint6.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint7.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint8.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9.txt
위의 스크립트는 tecmint1.txt, tecmint2.txt… tecmint15.txt라는 15 개의 파일을 생성하며 모든 파일은 동일한 데이터를 포함합니다.
"I Love Tecmint. Tecmint is a very nice community of Linux Users."
2. 이제 tecmint 폴더 내에서 중복 파일을 검색하십시오.
$ fdupes /home/$USER/Desktop/tecmint /home/tecmint/Desktop/tecmint/tecmint13.txt /home/tecmint/Desktop/tecmint/tecmint8.txt /home/tecmint/Desktop/tecmint/tecmint11.txt /home/tecmint/Desktop/tecmint/tecmint3.txt /home/tecmint/Desktop/tecmint/tecmint4.txt /home/tecmint/Desktop/tecmint/tecmint6.txt /home/tecmint/Desktop/tecmint/tecmint7.txt /home/tecmint/Desktop/tecmint/tecmint9.txt /home/tecmint/Desktop/tecmint/tecmint10.txt /home/tecmint/Desktop/tecmint/tecmint2.txt /home/tecmint/Desktop/tecmint/tecmint5.txt /home/tecmint/Desktop/tecmint/tecmint14.txt /home/tecmint/Desktop/tecmint/tecmint1.txt /home/tecmint/Desktop/tecmint/tecmint15.txt /home/tecmint/Desktop/tecmint/tecmint12.txt
3. -r 옵션을 사용하여 하위 디렉토리를 포함하여 모든 디렉토리에서 반복적으로 중복을 검색합니다.
파일 및 폴더 수에 따라 모든 파일과 폴더를 반복적으로 검색하므로 중복을 검색하는 데 시간이 걸립니다. 그 동안 터미널의 전체 진행 상황이 다음과 같이 표시됩니다.
$ fdupes -r /home Progress [37780/54747] 69%
4. -S 옵션을 사용하여 폴더 내에서 발견 된 중복 크기를 확인합니다.
$ fdupes -S /home/$USER/Desktop/tecmint 65 bytes each: /home/tecmint/Desktop/tecmint/tecmint13.txt /home/tecmint/Desktop/tecmint/tecmint8.txt /home/tecmint/Desktop/tecmint/tecmint11.txt /home/tecmint/Desktop/tecmint/tecmint3.txt /home/tecmint/Desktop/tecmint/tecmint4.txt /home/tecmint/Desktop/tecmint/tecmint6.txt /home/tecmint/Desktop/tecmint/tecmint7.txt /home/tecmint/Desktop/tecmint/tecmint9.txt /home/tecmint/Desktop/tecmint/tecmint10.txt /home/tecmint/Desktop/tecmint/tecmint2.txt /home/tecmint/Desktop/tecmint/tecmint5.txt /home/tecmint/Desktop/tecmint/tecmint14.txt /home/tecmint/Desktop/tecmint/tecmint1.txt /home/tecmint/Desktop/tecmint/tecmint15.txt /home/tecmint/Desktop/tecmint/tecmint12.txt
5. 다음과 같이 -S 및 -r 옵션을 사용하여 동시에 발견 된 모든 디렉토리 및 하위 디렉토리에 대한 중복 파일의 크기를 볼 수 있습니다.
$ fdupes -Sr /home/avi/Desktop/ 65 bytes each: /home/tecmint/Desktop/tecmint/tecmint13.txt /home/tecmint/Desktop/tecmint/tecmint8.txt /home/tecmint/Desktop/tecmint/tecmint11.txt /home/tecmint/Desktop/tecmint/tecmint3.txt /home/tecmint/Desktop/tecmint/tecmint4.txt /home/tecmint/Desktop/tecmint/tecmint6.txt /home/tecmint/Desktop/tecmint/tecmint7.txt /home/tecmint/Desktop/tecmint/tecmint9.txt /home/tecmint/Desktop/tecmint/tecmint10.txt /home/tecmint/Desktop/tecmint/tecmint2.txt /home/tecmint/Desktop/tecmint/tecmint5.txt /home/tecmint/Desktop/tecmint/tecmint14.txt /home/tecmint/Desktop/tecmint/tecmint1.txt /home/tecmint/Desktop/tecmint/tecmint15.txt /home/tecmint/Desktop/tecmint/tecmint12.txt 107 bytes each: /home/tecmint/Desktop/resume_files/r-csc.html /home/tecmint/Desktop/resume_files/fc.html
6. 한 폴더 또는 모든 폴더를 반복적으로 검색하는 것 외에 필요에 따라 두 폴더 또는 세 폴더에서 선택하도록 선택할 수 있습니다. 물론 필요한 경우 -S 및/또는 -r 옵션을 사용할 수 있습니다.
$ fdupes /home/avi/Desktop/ /home/avi/Templates/
7. 복사본을 보존하면서 중복 파일을 삭제하려면 '-d'옵션을 사용할 수 있습니다. 이 옵션을 사용하는 동안 각별히주의해야합니다. 그렇지 않으면 필요한 파일/데이터가 손실 될 수 있으며 프로세스를 복구 할 수 없습니다.
$ fdupes -d /home/$USER/Desktop/tecmint [1] /home/tecmint/Desktop/tecmint/tecmint13.txt [2] /home/tecmint/Desktop/tecmint/tecmint8.txt [3] /home/tecmint/Desktop/tecmint/tecmint11.txt [4] /home/tecmint/Desktop/tecmint/tecmint3.txt [5] /home/tecmint/Desktop/tecmint/tecmint4.txt [6] /home/tecmint/Desktop/tecmint/tecmint6.txt [7] /home/tecmint/Desktop/tecmint/tecmint7.txt [8] /home/tecmint/Desktop/tecmint/tecmint9.txt [9] /home/tecmint/Desktop/tecmint/tecmint10.txt [10] /home/tecmint/Desktop/tecmint/tecmint2.txt [11] /home/tecmint/Desktop/tecmint/tecmint5.txt [12] /home/tecmint/Desktop/tecmint/tecmint14.txt [13] /home/tecmint/Desktop/tecmint/tecmint1.txt [14] /home/tecmint/Desktop/tecmint/tecmint15.txt [15] /home/tecmint/Desktop/tecmint/tecmint12.txt Set 1 of 1, preserve files [1 - 15, all]:
모든 중복 항목이 나열되고 하나씩 또는 특정 범위 또는 한 번에 모두 삭제하라는 메시지가 표시 될 수 있습니다. 특정 범위의 파일 파일을 삭제하려면 아래와 같은 범위를 선택할 수 있습니다.
Set 1 of 1, preserve files [1 - 15, all]: 2-15 [-] /home/tecmint/Desktop/tecmint/tecmint13.txt [+] /home/tecmint/Desktop/tecmint/tecmint8.txt [-] /home/tecmint/Desktop/tecmint/tecmint11.txt [-] /home/tecmint/Desktop/tecmint/tecmint3.txt [-] /home/tecmint/Desktop/tecmint/tecmint4.txt [-] /home/tecmint/Desktop/tecmint/tecmint6.txt [-] /home/tecmint/Desktop/tecmint/tecmint7.txt [-] /home/tecmint/Desktop/tecmint/tecmint9.txt [-] /home/tecmint/Desktop/tecmint/tecmint10.txt [-] /home/tecmint/Desktop/tecmint/tecmint2.txt [-] /home/tecmint/Desktop/tecmint/tecmint5.txt [-] /home/tecmint/Desktop/tecmint/tecmint14.txt [-] /home/tecmint/Desktop/tecmint/tecmint1.txt [-] /home/tecmint/Desktop/tecmint/tecmint15.txt [-] /home/tecmint/Desktop/tecmint/tecmint12.txt
8. 안전의 관점에서 'fdupes'의 출력을 파일로 인쇄 한 다음 텍스트 파일을 확인하여 삭제할 파일을 결정할 수 있습니다. 이렇게하면 실수로 파일이 삭제 될 가능성이 줄어 듭니다. 다음을 수행 할 수 있습니다.
$ fdupes -Sr /home > /home/fdupes.txt
참고 :‘/ home’을 원하는 폴더로 바꿀 수 있습니다. 또한 반복적으로 검색하려면‘-r’및‘-S’옵션을 사용하고 각각 인쇄 크기를 사용합니다.
9. 옵션‘-f’를 사용하여 각 일치 항목 집합에서 첫 번째 파일을 생략 할 수 있습니다.
먼저 디렉토리의 파일을 나열합니다.
$ ls -l /home/$USER/Desktop/tecmint total 20 -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9 (3rd copy).txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9 (4th copy).txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9 (another copy).txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9 (copy).txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9.txt
그런 다음 각 일치 항목 집합에서 첫 번째 파일을 생략합니다.
$ fdupes -f /home/$USER/Desktop/tecmint /home/tecmint/Desktop/tecmint9 (copy).txt /home/tecmint/Desktop/tecmint9 (3rd copy).txt /home/tecmint/Desktop/tecmint9 (another copy).txt /home/tecmint/Desktop/tecmint9 (4th copy).txt
10. 설치된 fdupes 버전을 확인하십시오.
$ fdupes --version fdupes 1.51
11. fdupes에 대한 도움이 필요하면 '-h'스위치를 사용할 수 있습니다.
$ fdupes -h Usage: fdupes [options] DIRECTORY... -r --recurse for every directory given follow subdirectories encountered within -R --recurse: for each directory given after this option follow subdirectories encountered within (note the ':' at the end of the option, manpage for more details) -s --symlinks follow symlinks -H --hardlinks normally, when two or more files point to the same disk area they are treated as non-duplicates; this option will change this behavior -n --noempty exclude zero-length files from consideration -A --nohidden exclude hidden files from consideration -f --omitfirst omit the first file in each set of matches -1 --sameline list each set of matches on a single line -S --size show size of duplicate files -m --summarize summarize dupe information -q --quiet hide progress indicator -d --delete prompt user for files to preserve and delete all others; important: under particular circumstances, data may be lost when using this option together with -s or --symlinks, or when specifying a particular directory more than once; refer to the fdupes documentation for additional information -N --noprompt together with --delete, preserve the first file in each set of duplicates and delete the rest without prompting the user -v --version display fdupes version -h --help display this help message
이제 그게 전부입니다. "지금까지 Linux에서 중복 파일을 찾고 삭제하는 방법을 알려주십시오. 또한이 유틸리티에 대한 귀하의 의견을 말씀해주십시오. 귀중한 피드백을 아래 댓글 섹션에 입력하고 좋아요/공유를 잊지 말고 우리가 널리 퍼질 수 있도록 도와주세요.
중복 파일을 제거하기 위해 fslint라는 다른 유틸리티를 작업 중이며 곧 게시 될 예정이며 사람들은 읽고 싶어 할 것입니다.