소스 디렉터리를 업데이트할 때 tar를 사용해도 안전합니까?

소스 디렉터리를 업데이트할 때 tar를 사용해도 안전합니까?

와 같은 질문을 해야 해요이것.

tar디렉토리를 사용 및 백업하는 경우

  1. 새 파일/디렉토리가 생성되고 있습니다.다음에 추가

  2. 현재 파일/디렉토리는 다음과 같습니다.편집됨그리고삭제됨

안전한 결과를 기대할 수 있나요?

통과안전 결과내 말은:

  1. tar소스 디렉터리/하위 디렉터리의 내용을 망치지 않습니다.
  2. tar아카이브를 구축할 때 발견된 대로 아카이브에 추가됩니다.
  3. 설명된 변경 사항이 발생한 경우에도 성공 신호가 표시됩니다.

답변1

1. tar는 소스 디렉터리/하위 디렉터리의 내용을 망치지 않습니다.

업데이트 액세스 시간을 망친 것으로 계산하지 않는 한 이는 사실입니다. 그 외에 tar는 소스 트리에서 아무것도 변경하지 않습니다.

2. 아카이브를 구축할 때 발견된 tar가 아카이브에 추가됩니다.

실제로 "지금"에는 가치 있는 것이 있습니다. tar가 소스 트리를 읽는 동안 변경 사항이 발생하면 아카이브에 포함된 내용은 다소 예측할 수 없습니다. 특히, tar가 파일을 읽는 동안 파일이 변경되면 tar가 어느 시점에서 그랬던 것처럼 파일의 복사본을 쓸 것이라는 보장은 없습니다. 예를 들어 다음이 있을 수 있습니다.

  • tar는 foo의 0~4095바이트를 읽습니다.
  • 일부 프로그램은 foo단일 쓰기 작업으로 바이트 4095-4096을 변경하여 씁니다.
  • tar는 foo.tar 파일의 4096~8191바이트를 읽습니다.

foo그러면 아카이브의 콘텐츠는 기존 콘텐츠도 새 콘텐츠도 아닌, 이 둘이 혼합된 형태입니다. 또 다른 예는 tar가 소스 트리를 읽는 동안 파일 이름을 바꾸면 tar가 해당 파일을 완전히 건너뛸 수 있다는 것입니다.

3. 설명된 변경 사항이 발생한 경우에도 성공이 표시됩니다.

아니요, 반드시 그런 것은 아닙니다. tar가 소스를 읽는 동안 소스가 변경되었음을 감지하면 불평하고 실패 상태를 반환할 수 있습니다. 특히 tar는 내용을 쓰기 전에 파일 크기를 아카이브에 기록해야 하므로 먼저 각 소스 파일의 크기를 읽습니다. 레코드 크기에 도달하기 전에 파일 끝에 도달하면 복구할 확실한 방법이 없으므로 적어도 이 경우 모든 tar 구현에서 불만이 발생합니다.

안전하게 백업하려면 파일 시스템이나 볼륨 수준 도구를 사용하여 스냅샷을 찍고 백업하세요.

답변2

아니요.

  • tar가 디렉터리를 검색한 후 파일을 추가하면 해당 파일은 추가되지 않습니다.
  • 파일이 아카이브에 추가되고 디스크에서 삭제되는 경우 해당 파일은 아카이브에서 삭제되지 않습니다.
  • 이는 내용을 변경한 경우에도 적용됩니다.

Unix(tar 아님)는 한 가지 작업을 수행합니다.

  • tar가 파일을 수집하는 동안 (편집을 위해) 파일을 열면 tar가 어떤 버전의 파일을 사용할지 알 수 없습니다(메모리에 있는 버전, 디스크에 있는 버전 또는 둘의 혼합).

파이프를 읽거나 쓰기 위해 tar를 사용할 수 있다는 것을 기억하세요(실제로는tar세상이 어렸을 때 테이프를 의미 ), 그래서 타르

  • 한번 쓸게
  • 출력을 되감지 않습니다.

위 내용은 기본 사항입니다 tar -c.

  • tar -u새로운 파일이 추가됩니다.
  • 파일을 tarre하는 경우 tar --diff쉘과 tar 파일의 조합을 사용하여 tar 파일과 디렉터리를 동기화할 수 있습니다.tar --delete

관련 정보