fdupes - 두 디렉토리를 비교한 후 파일 삭제

fdupes - 두 디렉토리를 비교한 후 파일 삭제

현재 을(를) 사용하여 문제를 해결하려고 합니다 fdupes. 두 폴더를 서로 비교하고 이 디렉터리 중 하나에 있는 중복 파일을 모두 제거하고 싶습니다.

예:

파일은 자동으로 저장됩니다 /srv/. 중복된 파일이 많이 있습니다. 모두 그대로 유지되어야 합니다. 또한 이라는 디렉토리가 있는데 그 안에 있는 /watchfolder/모든 파일을 삭제하고 싶습니다 .watchfolder/srv/

나는 그것을 시도했고 fdupes -r srv/ watchfolder/그 반대도 마찬가지였습니다. 하지만 내 파일이 계속 엉망이 되고 있어요 srv/.

답변1

Fdupes를 재귀적으로 사용할 때 필터링

중복된 항목이 여러 개인 경우 다음과 같은 결과가 나올 수 있습니다.

srv/foo                               
srv/a/b/foo
watchfolder/foo
watchfolder/c/foo
watchfolder/d/foo

이 경우 발견된 첫 번째 중복 항목(예: srv 항목에서 최소 중첩 깊이와의 일치 항목)만 유지하려는 경우가 아니면 더 스마트한 규칙을 적용하기 위해 중복 항목 목록을 필터 또는 셸 스크립트에 공급해야 합니다. 이것이 당신이 원하는 것이라면:

fdupes --recurse --delete srv/ watchfolder/

작동합니다. 모든 것을 srv/에 보관하려는 등 더 복잡한 경우에는 다음과 같은 필터 사용을 고려하세요.

fdupes --recurse srv/ watchfolder/ | sed '/^srv/d; /^$/! s/.*/"&"/' | xargs rm

답변2

fdupes는 타임스탬프가 가장 빠른 첫 번째 파일을 유지합니다. 도움말의 지침이 약간 오해의 소지가 있습니다.

$ ll foo/ bar/
bar/:
total 12
-rw-rw-r--. 1 BriGuy BriGuy   2 Jul 23 16:10 a
-rw-rw-r--. 1 BriGuy BriGuy 102 Jul 23 16:22 b
-rw-rw-r--. 1 BriGuy BriGuy 610 Jul 23 16:23 c

foo/:
total 12
-rw-rw-r--. 1 BriGuy BriGuy   2 Jul 23 16:10 a
-rw-rw-r--. 1 BriGuy BriGuy 102 Jul 23 16:11 b
-rw-rw-r--. 1 BriGuy BriGuy 610 Jul 23 16:22 c

$ fdupes foo/ bar/
foo/b                                   
bar/b

foo/c
bar/c
# in above foo/b and foo/c would be kept

$ cp bar/c foo/c
$ fdupes foo/ bar/
bar/c                                   
foo/c

foo/b
bar/b
# in above foo/b and bar/c would be kept,
# as bar/c has an earlier timestamp than foo/c now

관련 정보