먼저; 일반적인 하드 링크가 아닌 심볼릭 링크를 사용해야하는 이유가 있습니까? 상대 경로가있는 심볼릭 링크의 필요성을 이해하는 데 어려움을 겪고 있습니다. 이 문제를 해결하는 방법은 다음과 같습니다.
나는 데비안 (우분투) 버전의 fdupes가 -L
옵션을 사용하여 복제본을 하드 링크로 대체 할 수 있다고 생각 하지만, 이것을 확인하기 위해 데비안 설치가 없습니다.
-L
옵션 이있는 버전이 없다면 commandlinefu 에서 찾은이 작은 bash 스크립트를 사용할 수 있습니다 .
이 구문은 bash에서만 작동합니다.
fdupes -r -1 path | while read line; do master=""; for file in ${line[*]}; do if [ "x${master}" == "x" ]; then master=$file; else ln -f "${master}" "${file}"; fi; done; done
위의 명령은 "path"에서 모든 중복 파일을 찾아 하드 링크로 대체합니다. ls -ilR
inode 번호 를 실행 하고 확인하여이를 확인할 수 있습니다 . 다음은 10 개의 동일한 파일이있는 샘플입니다.
$ ls -ilR
total 20
3094308 -rw------- 1 username group 5 Sep 14 17:21 file
3094311 -rw------- 1 username group 5 Sep 14 17:21 file2
3094312 -rw------- 1 username group 5 Sep 14 17:21 file3
3094313 -rw------- 1 username group 5 Sep 14 17:21 file4
3094314 -rw------- 1 username group 5 Sep 14 17:21 file5
3094315 drwx------ 1 username group 48 Sep 14 17:22 subdirectory
./subdirectory:
total 20
3094316 -rw------- 1 username group 5 Sep 14 17:22 file
3094332 -rw------- 1 username group 5 Sep 14 17:22 file2
3094345 -rw------- 1 username group 5 Sep 14 17:22 file3
3094346 -rw------- 1 username group 5 Sep 14 17:22 file4
3094347 -rw------- 1 username group 5 Sep 14 17:22 file5
모든 파일에는 별도의 inode 번호가 있으므로 별도의 파일이됩니다. 이제 중복을 제거하십시오.
$ fdupes -r -1 . | while read line; do j="0"; for file in ${line[*]}; do if [ "$j" == "0" ]; then j="1"; else ln -f ${line// .*/} $file; fi; done; done
$ ls -ilR
.:
total 20
3094308 -rw------- 10 username group 5 Sep 14 17:21 file
3094308 -rw------- 10 username group 5 Sep 14 17:21 file2
3094308 -rw------- 10 username group 5 Sep 14 17:21 file3
3094308 -rw------- 10 username group 5 Sep 14 17:21 file4
3094308 -rw------- 10 username group 5 Sep 14 17:21 file5
3094315 drwx------ 1 username group 48 Sep 14 17:24 subdirectory
./subdirectory:
total 20
3094308 -rw------- 10 username group 5 Sep 14 17:21 file
3094308 -rw------- 10 username group 5 Sep 14 17:21 file2
3094308 -rw------- 10 username group 5 Sep 14 17:21 file3
3094308 -rw------- 10 username group 5 Sep 14 17:21 file4
3094308 -rw------- 10 username group 5 Sep 14 17:21 file5
이제 파일의 아이 노드 번호가 모두 동일하므로 디스크의 동일한 물리적 데이터를 가리 킵니다.
이것이 당신의 문제를 해결하거나 적어도 올바른 방향으로 당신을 가리 키기를 바랍니다!
v1.51
(Ubuntu 14.04.2 LTS) 의 옵션도 아닙니다 .