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라는 다른 유틸리티를 작업 중이며 곧 게시 될 예정이며 사람들은 읽고 싶어 할 것입니다.