압축 중인 폴더에 파일을 추가할 수 있나요?

압축 중인 폴더에 파일을 추가할 수 있나요?

file_i.yo매초마다 폴더에 일부 파일을 생성하는 Python 스크립트가 있다고 가정해 보겠습니다 . folder얼마 후 나는 현재 상태를 압축하여 folder어딘가로 보내야 한다고 결정했습니다. 그러므로 나는 bash를 부른다.

zip -r current_folder.zip folder

압축에는 약 1분이 소요됩니다.

이 상황에서는 어떻게 되나요? 제가 가장 관심을 두는 부분은 압축파일이 손상될 수 있는지 여부입니다.

답변1

아카이브 자체에는 문제가 없지만(즉, 유효한 zip 아카이브임) file_i.yo내부 파일이 손상될 수도 있고 손상되지 않을 수도 있습니다. file_i.yo업데이트 방법에 따라 다릅니다 . 비교하다이 답변:

파일을 수정하려는 경우 두 가지 옵션이 있으며 각 옵션에는 장단점이 있습니다.

  • 해당 위치에 파일을 덮어쓸 수 있습니다. 이는 추가 공간을 사용하지 않으며 기존 파일 콘텐츠 이외의 하드 링크, 권한 및 기타 속성을 보존합니다. 이 방법의 가장 큰 단점은 파일이 기록되는 동안 어떤 일이 발생하면(응용 프로그램이 충돌하거나 정전이 발생하는 경우) 파일이 부분적으로 기록된다는 점입니다.
  • 파일의 새 버전을 다른 이름의 새 파일에 쓴 다음 해당 위치로 이동할 수 있습니다. 이는 더 많은 공간을 사용하고 하드 링크를 깨뜨리며, 파일에 대한 쓰기 권한은 있지만 파일에 포함된 디렉토리가 없는 경우에는 이 작업을 수행할 수 없습니다. 반면, 이전 버전의 파일은 자동으로 새 버전으로 대체되므로 모든 시점에서 파일 이름은 파일의 유효하고 완전한 버전을 가리킵니다.

zip첫 번째 경우에는 프로세스가 파일을 읽는 동안 파일이 변경될 수 있습니다. 실제로 읽은 내용은 다음과 같은 이진수와 같습니다.파노라마 실패: 결과의 다양한 부분은 현실의 다양한 "버전"에서 나옵니다. 이런 일이 발생하면 결과 아카이브에는 손상되었거나 비어 있거나 부분적인 file_i.yo파일이 포함됩니다(파일이 내부에서 업데이트된 방식과 업데이트 프로세스의 어느 단계에서 zip읽을 수 있었는지에 따라 다름).

두 번째 경우에는 zip파일이 열리고 일부 개별 "버전"이 읽혀집니다. 새 파일(새 "버전")이 디렉터리의 이전 파일을 대체하는 경우에도 사용된 설명자는 zip이전 파일을 가리키며 도구는 해당 파일을 끝까지 읽습니다. 결과 아카이브에는 일부 유효한 file_i.yo파일이 포함됩니다.

관련 정보