나는 rsync를 사용하여 /hi 폴더의 증분 백업을 만들고 --link-dest=[some.server]/hi를 사용하고 있습니다. 내 서버의 rsync를 통해 백업되는 /hi/there 폴더에 1000장의 사진이 있다고 가정해 보겠습니다.
이제 이 사진들을 /hi/there에서 /hi/here로 옮기겠습니다. rsync가 이러한 1000장의 사진에 대한 하드 링크를 생성하도록 할 수 있습니까? 아니면 rsync가 항상 이러한 사진이 변경될 때마다 새 복사본을 만들도록 할 수 있습니까(단지 다른 폴더로 이동했음에도 불구하고).
fslint와 같은 것과 결합하면 rsync가 1000개의 파일이 서로 다른 디렉토리에 있다는 것을 인식하고 복사본 대신 하드 링크를 생성할 수 있는 것 같습니다.
답변1
많은 양의 데이터를 이동할 때(백업에 두 개의 복사본을 저장하지 않음으로써 절약된 공간은 추가 메타데이터 세트를 저장하는 데 사용되는 백업 공간보다 커야 함) 다음과 같이 몇 번 수행했습니다.
- 의 각 파일에 대해
/hi/there
동일한 이름의 하드 링크를 생성합니다./hi/here
- 백업하기
- 파일/하드 링크 삭제(하드 링크를 생성할 때 파일에 대한 이전 링크와 새 링크 간에는 실제로 차이가 없습니다)
/hi/there
물론 이전 백업에는 각 파일의 복사본 하나만 포함되며, 중간 백업에서는 새 이름을 동일한 복사본(백업 내)에 연결하며, 향후 백업에서는 파일에 다른 이름이 있는지 전혀 모르고 새 이름만 저장됩니다. 복사본이 기존 복사본에 연결됩니다.
추가 복사본을 위한 백업 공간이 없는 경우 1단계와 3단계를 수행하는 데 방해가 없으며 2단계 사이에 충분한 시간이 있으면 정기적으로 예약된 백업이 될 수 있습니다.
백업에 이 추가 복사본을 포함하지 않으려면 새 백업을 만들 때 해당 복사본을 삭제할 수 있습니다.
답변2
--link-dest
,reference 를 사용하면 /hi/there
파일에 하드 링크가 생성됩니다 rsync
. 하드 링크 수를 표시하는 명령을 hi/here
실행하여 이를 확인할 수 있습니다 . ls -l
파일이 고유한 경우 숫자 1만 표시됩니다.
https://superuser.com/a/12975
ionode
확인하는 또 다른 방법은 아래 설명된 대로 파일의 고유 번호를 보고 두 폴더 간에 비교하는 것입니다.
https://superuser.com/a/12974
폴더를 비교하여 이를 확인할 수도 있지만 개별 파일을 비교하는 것이 더 쉽다는 것을 알았습니다.
inode로 두 폴더를 구별하는 방법
증분 rsync 백업에서도 동일한 문제가 발생했으며 추가 공간을 사용하지 않고도 하드 링크가 올바르게 생성되었는지 확인할 수 있었습니다.