기존 tar.gz 아카이브에 파일을 추가 / 업데이트 하시겠습니까? 있습니까? 기본적으로 파일이

tar.gz 아카이브에 파일을 추가 / 업데이트하는 방법이 있습니까? 기본적으로 파일이 포함 된 아카이브가 있으며 /data/data/com.myapp.backup/./files/settings.txt해당 파일을 아카이브에서 가져오고 (이미 완료) 편집이 완료되면 다시 아카이브로 푸시하고 싶습니다. 어떻게하면됩니까? .경로 때문에 문제가 있습니까?



답변

tar 파일 형식은 몇 개의 헤더와 함께 연결된 일련의 파일입니다. 그것을 찢고 내용물을 넣은 다음 다시 정리하는 것은 그리 복잡한 일이 아닙니다. 즉, Jander는 tar as a program이 어떻게 유틸리티 기능을 가지고 있지 않고 압축과 관련하여 추가 합병증이 있는지를 설명했습니다.

그러나 작업을위한 도구가 있습니다! 압축 된 tar 아카이브의 루프백 마운트를 폴더에 수행 한 다음 파일 시스템을 변경할 수있는 시스템이 두 개 이상 있습니다. 완료되면 폴더를 마운트 해제하면 압축 된 아카이브를 롤링 할 수 있습니다.

첫 번째 옵션은 FUSEarchivemount 프로젝트입니다 . 여기 에 튜토리얼이 있습니다. 시스템에 이미 FUSE가있을 수 있으며 배포가 없으면 배포에 대한 옵션이 있어야합니다.

다른 옵션은 tarfs 입니다. 사용하는 것이 더 간단 하지만 bzip2 아카이브를 손상시키는 데 문제가 있다고 들었습니다.


답변

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

tar파일의 “in-place”업데이트를 지원하지 않습니다. 그러나 파일이 이미 아카이브에있는 파일과 동일한 경로를 가지고 있더라도 파일을 아카이브 끝에 추가 할 수 있습니다. 이 경우 파일의 두 사본이 모두 아카이브에 있으며 나중에 추가 된 파일이 이전 파일을 대체합니다. 이를 위해 사용할 명령은 tar r(또는 tar u아카이브보다 최신 파일 만 추가하는 것) 사용하는 명령입니다. .경로는 문제가되지 않습니다.

그러나 압축 된 아카이브에는 추가 할 수 없습니다. 따라서 다음을 수행해야합니다.

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

전체 아카이브를 두 번 이상 다시 쓰는 것을 의미하기 때문에 아마도 듣고 싶지 않을 것입니다. 매우 큰 아카이브가 아닌 경우 전체 내용을 푼 다음 편집 한 후 다시 타르 팅하는 것이 좋습니다. 또는 압축되지 않은 아카이브를 사용할 수 있습니다.


답변

Tar은 원래 테이프 용으로 사용되었으므로 “바꾸기”파일은 실제로 설계에 포함되지 않습니다. 그러나 –delete를 사용하여 원래 tar에서 파일을 삭제 한 다음 -u를 사용하여 tar를 업데이트하고 파일을 다시 추가 할 수 있습니다. tar는 아카이브를 내부적으로 재구성해야하므로 약간 시간이 걸릴 수 있습니다.


답변

Linux x86_64 GNU / Linux에서 해당 작업을 수행하려면 다음 명령을 사용하십시오.

tar cvfpz /path/archive.tar -T list.txt

이 명령 /path은 파일에 포함 된 list.txt파일 목록을 사용하여 압축 된 아카이브를 작성 합니다.


답변