rsync가 변경되지 않은 일부 파일만 하드 링크하는 이유는 무엇입니까?

rsync가 변경되지 않은 일부 파일만 하드 링크하는 이유는 무엇입니까?

저는 변경되지 않은 파일이 이전 백업에 하드 링크되도록 이전 백업을 가리키는 옵션을 rsync사용하여 증분 백업에 사용하고 있습니다.--link-dest

이것은 작동하지만 모든 파일에 적용되는 것은 아닙니다. 예를 들어 백업에 3년 넘게 수정되지 않은 파일이 포함된 디렉터리가 있습니다. 그러나 어떤 이상한 이유로 인해 그 중 일부만이 하드 링크입니다.

불편하게도 더 큰 파일은 모두 복사본입니다(즉, 를 통해 확인되는 파일에 대한 링크가 하나만 있습니다 ls -l). 그러나 일부 작은 파일의 경우에도 마찬가지이며 실제로 일부 하드 링크된 파일은 일부 복사된 파일보다 큽니다.

어떤 것이 복사본이고 어떤 하드 링크가 될지 예측할 수 있는 패턴이 없는 것 같습니다. 파일 이름 길이와 파일 크기는 수정 날짜와 마찬가지로 관련성이 없어 보입니다. 복사된 목록과 하드 링크된 목록 모두에 이 모든 것이 혼합되어 있습니다. 즉, 파일이~인 것 같다여러 백업에서 일관성을 유지해야 하므로 한 백업에서 발생한 일이 다음 백업에서도 발생한 것처럼 보입니다.

rsync파일 을 하드 링크하는 대신 복사하게 만드는 일부 속성(기술적 또는 기타)이나 기능이 있습니까 ?

편집 1:ls -l"속성"을 언급하면 ​​목록에 없지만 영향을 미칠 수 있는 일부 속성이 있는지 궁금했지만 lsattr소스 디렉터리에서 수행하면 모든 파일이 동일한 속성을 가지고 있음을 알 수 있습니다.

편집 2:이전에(지금은 삭제됨) 권한이 모두 같다고 했는데, 그건 틀렸습니다. 권한은 대상(백업된) 디렉터리에서도 동일했습니다. (권한을 보존하기 위해)를 사용하고 있는데 --perms왜 권한이 보존되지 않는지 모르겠습니다. 이전에는 루트가 아닌 사용자로 실행했지만 지금은 차이가 나는 경우를 대비해 루트로 시도하고 있지만 권한이 여전히 유지되지 않습니다. 이는 아마도 일부 파일이 변경된 것처럼 보이는 이유일 수 있습니다. 하지만 해당 권한은 분명히 있습니다(적어도 잘못된 권한이 있는 이전 백업과 비교할 때).

편집 3:이제 내 CIFS 서버와 관련이 있다고 생각합니다. mount.cifs맨 페이지에 옵션에 대한 내용이 있습니다 file_mode. "서버가 CIFS Unix 확장을 지원하지 않는 경우 이는 기본 파일 모드를 재정의합니다." mount마운트를 나열하기 위해 인수 없이 명령을 실행하면 나열된 옵션 file_mode=0755dir_mode=0755내가 보는 것과 관련된 옵션이 포함됩니다. 파일을 마운트 할 수 없으므로 chmod원래 권한이 없었던 파일은 0755변경된 것으로 간주되어 다시 복사되며 마운트로 인해 백업에서 다시 한 번 잘못된 권한을 얻게 됩니다.

답변1

해결책이라기보다는 해결 방법에 가깝기 때문에 이제 --perms/ -p또는 이를 암시하는 어떤 것도 사용하지 않습니다. 분명히 내 권한은 복사되지 않지만 최소한 권한이 다르기 때문에 변경되지 않은 파일이 변경되었다고 생각하지 않습니다.

관련 정보