GNU tar 증분 백업은 atime 또는 mtime만 다른 경우에도 전체 파일을 다시 저장합니까?

GNU tar 증분 백업은 atime 또는 mtime만 다른 경우에도 전체 파일을 다시 저장합니까?
mkdir test
echo "hi" > test/file1
tar -c -f archive.0.tar -g test.snar test
touch -a test/file1  # changes atime and ctime, doesn't change mtime
tar -c -f archive.1.tar -g test.snar test
tar -t -G -vv -f archive.1.tar  # lists Y for file1

그렇다면 GNU tar는 접근 시간(atime)과 메타데이터 변경 시간(ctime)만 변경되어도 파일 전체를 다시 저장하는 걸까요? 나에게 이것은 많은 파일이 읽히지만 변경되지 않을 것이라고 합리적으로 기대할 수 있기 때문에 이것은 매우 비효율적으로 보입니다.

답변1

증분 백업 에는 gtar신뢰할 수 없지만 타임스탬프를 잘못 처리한 결과는 아닙니다.

사용자 영역에서 작동하는 모든 백업 도구는 예를 들어 내부 파일 시스템 구조를 검사할 수 없으며 zfs send동일한 방식으로 타임스탬프를 처리해야 합니다. 그렇지 않으면 올바른 증분 백업을 허용할 수 없습니다.

  • atime파일이 수정되었는지 여부가 아니라 파일을 읽었다는 메시지만 표시하므로 백업과는 아무 관련이 없습니다.

  • mtime언뜻 보면 흥미로워 보일 수도 있지만 중요하지 않습니다. 이는 mtime파일 값이 사용자 공간 프로그램에 의해 임의의 값으로 설정될 수 있기 때문입니다 .

  • ctime이는 조작할 수 없는 유일한 타임스탬프이므로 증분 백업에 중요한 유일한 타임스탬프입니다.

ctime콘텐츠나 메타데이터는 조작되거나 업데이트될 수 없으므로 ctime백업 도구는 업데이트될 때마다 파일 콘텐츠와 파일 메타데이터를 보관해야 합니다 ctime.

따라서 변경되지 않은 것처럼 보이는 파일 mtime에도 여전히 내용이 수정되었을 수 있으므로 백업에 있어야 합니다.

마지막으로: GNU tar는 귀하가 요청한 방법을 구현하지 않습니다. 동작은 하드코딩되어 있습니다.

star그러나 증분 백업을 시도할 수 있도록 2004년에 만들어진 옵션을 제공합니다 -dumpmeta. star하지만 이 옵션 사용에 대한 명시적인 경고가 있습니다. 매뉴얼 페이지를 참조하세요.

-dumpmeta 증분 덤프 모드에서 스타의 동작을 변경합니다. -dumpmeta가 사용되고 마지막 증분 덤프 이후 파일의 inode 변경 시간(st_ctime)만 업데이트된 경우 star는 파일 내용이 아닌 파일의 메타데이터(uid, 권한 등)만 아카이브합니다. -dumpmeta를 사용하면 델타 덤프가 더 작아지지만 두 델타 사이에 생성되고 st_mtime이 이전 날짜로 설정된 파일(예: tar 추출의 결과)은 전체 내용과 함께 보관되지 않습니다. 따라서 -dumpmeta를 사용하면 불완전한 증분 덤프가 발생할 수 있으므로 주의해서 사용해야 합니다.

star기본 방식은 1981년경부터 ufsdump사용된 방식 ufsrestore으로 2005년 2월부터 사용된 방식이며 star, 이들 프로그램을 이용하여 증분 백업을 복원하는데 문제가 있었던 적은 한번도 없었다.

관련 정보