기존 tar.gz 아카이브에 파일을 어떻게 추가/업데이트합니까?

기존 tar.gz 아카이브에 파일을 어떻게 추가/업데이트합니까?

tar.gz 아카이브에 파일을 추가/업데이트하는 방법이 있습니까? 기본적으로 /data/data/com.myapp.backup/./files/settings.txt아카이브에서 추출하고 싶은 파일(이미 완료됨)이 포함된 아카이브가 있고 편집이 완료되면 다시 아카이브로 푸시합니다. 어떻게 해야 하나요? .경로에 문제가 있어서 그런걸까요 ?

답변1

아카이브에서 파일을 추출하려면 를 사용할 수 있습니다 tar xzf archive.tar.gz my/path/to/file.txt. 파일 경로의 디렉터리도 생성됩니다. 아카이브에 있는 파일을 나열하려면 tar t(예: )를 사용하십시오 .tar tzf archive.tar.gz

tar파일의 "내부" 업데이트는 지원되지 않습니다. 그러나 이미 아카이브에 있는 파일과 경로가 동일하더라도 아카이브 끝에 파일을 추가할 수 있습니다. 이 경우 파일의 두 복사본이 모두 아카이브에 있게 되며 나중에 추가된 파일이 이전 파일을 덮어쓰게 됩니다. 이를 위해 tar r(또는 tar u아카이브보다 새로운 파일을 추가하기 위해) 사용할 명령 은 사용할 명령입니다. 그 길에 있는 사람은 .문제가 되지 않습니다.

하지만 문제가 있습니다. 압축된 아카이브에는 추가할 수 없습니다. 그래서 당신은 이것을 해야 합니다:

gunzip archive.tar.gz
tar rf archive.tar data/data/com.myapp.backup/./files/settings.txt
gzip archive.tar

이는 아마도 전체 아카이브를 두 번 다시 작성한다는 의미이므로 여러분이 듣고 싶어하는 내용이 아닐 것입니다. 아주 큰 아카이브가 아니라면 전체 파일의 압축을 풀고 편집 후 다시 압축하는 것이 좋습니다. 또는 압축되지 않은 아카이브를 사용할 수 있습니다.

답변2

tar 파일 형식은 단순히 일부 헤더와 연결된 일련의 파일입니다. 분해하고, 내용을 추가하고, 다시 조립하는 것은 그다지 복잡한 작업이 아닙니다. 라고 한,황갈색 설명프로그램으로서의 tar에는 이를 수행하는 유틸리티 기능이 없으며 변경 전후에 수행해야 하는 압축과 관련된 다른 합병증이 있습니다.

하지만 작업을 완료할 수 있는 도구가 있습니다! 적어도 두 개의 시스템을 사용하면 압축된 tar 아카이브를 폴더에 루프백 마운트한 다음 파일 시스템을 변경할 수 있습니다. 완료되면 폴더를 마운트 해제하면 압축된 아카이브를 사용할 수 있습니다.

첫 번째 옵션은아카이브 마운트프로젝트는퓨즈. 이것은이에 대한 튜토리얼. 시스템에 이미 FUSE가 있을 수 있습니다. 그렇지 않은 경우 배포판에 옵션이 있어야 합니다.

또 다른 옵션은. 그것은사용하기 더 쉬워졌습니다., 그러나 bzip2 아카이브를 손상시키는 데 문제가 있다고 들었으므로 먼저 철저히 테스트하는 것이 좋습니다.

답변3

Tar는 원래 테이프용으로 만들어졌기 때문에 파일을 "교체"하는 것은 실제로 설계에 포함되지 않았습니다. 그러나 --delete원본 tar에서 파일을 삭제한 다음 -utar를 업데이트하고 파일을 다시 추가할 수 있습니다. tar아카이브를 내부적으로 재구성해야 하므로 시간이 다소 걸릴 수 있습니다 .

답변4

당신이 찾고있는 것은 zip입니다. 이것은 zip이 tar보다 나은 곳입니다. 다양한 파일이 포함된 대규모 디렉토리 구조를 압축할 때, 즉 웹 서버의 실행 중인 백업을 수행할 때 gzip이나 bzip2는 실제로 약간 더 나은 압축 성능을 발휘합니다.

일반적인 WP 설치에서 테스트한 결과, tar.gz는 zip을 통해 약 4MB만 저장합니다. 이는 약 660MB의 아카이브 파일(663MB/zip)(559MB/gzip)에 해당하며, bzip2는 4MB(555MB)를 추가로 저장하지만 속도는 훨씬 느리고 기존 아카이브에 대해 동일한 명령을 실행하여 증분 백업을 수행하는 기능이 여전히 부족합니다.

zip --symlinks -r -FS /path_to_backup_dir/backup_file.zip /path_to_webroot/ -x /exclusions_as_pattern/

관련 정보