find
두 디렉터리에서 중복 파일을 찾고 한 디렉터리의 파일을 다른 디렉터리의 파일에 대한 하드 링크로 바꾸는 간단한 방법(하나의 명령 또는 일련의 명령, 관련될 수 있음)을 찾고 있습니다 .
상황은 다음과 같습니다. 여러 사람이 오디오 파일을 저장하는 파일 서버이며 각 사용자는 자신의 폴더를 가지고 있습니다. 때로는 여러 사람이 똑같은 오디오 파일의 복사본을 갖고 있는 경우도 있습니다. 이제 이것들은 중복됩니다. 하드 드라이브 공간을 절약하기 위해 하드 링크를 만들고 싶습니다.
답변1
rdfind
당신이 요청한 것을 정확히 수행합니다(그리고 그 순서대로)조니 왜?목록). 중복된 링크를 제거하고 소프트 또는 하드 링크로 대체할 수 있습니다. 조합하여 symlinks
기호 링크를 절대 또는 상대로 만들 수도 있습니다. 체크섬 알고리즘(sha256, md5 또는 sha1)을 선택할 수도 있습니다.
컴파일되었으므로 대부분의 스크립팅 솔루션보다 빠릅니다. time
2009 Mac Mini에서 2600개 파일이 포함된 15GiB 폴더에 반환됩니다.
9.99s user 3.61s system 66% cpu 20.543 total
(md5 사용).
대부분의 패키지 처리기(예: Mac OS X용 MacPorts)에서 사용할 수 있습니다.
편집: rdfind는 정말 사용하기 쉽고 매우 교육적이라는 점을 덧붙여도 될까요? 해당 -dryrun true
플래그를 사용하면 매우 직관적이고 무섭지 않습니다(제 생각에는 파일을 삭제하는 도구가 일반적으로 사용되기 때문입니다).
답변2
도구를 사용하십시오 fdupes
:
fdupes -r /path/to/folder
디렉토리의 중복 목록을 제공합니다(-r은 재귀적으로 만듭니다). 출력은 다음과 같습니다.
파일 이름 1
파일 이름 2
파일 이름 3
파일 이름 4
파일 이름 5
Filename1과 filename2는 filename3, filename4, filename5와 동일합니다.
답변3
Perl 스크립트는 다음 위치에 있습니다.http://cpansearch.perl.org/src/ANDK/Perl-Repository-APC-2.002/eg/trimtrees.pl이것이 바로 당신이 원하는 것입니다:
명령줄에 지정된 모든 디렉터리를 탐색하고 MD5 체크섬을 계산하고 동일한 MD5를 가진 파일을 찾습니다. 동일하면 실제 비교가 이루어지며 실제로 동일하면 두 파일 중 두 번째 파일이 첫 번째 파일에 대한 하드 링크로 대체됩니다.