tar.gz 파일을 어떻게 업데이트합니까?


답변:


28

일반적으로이를 위해 -u 플래그를 사용합니다. tar의 매뉴얼 페이지에서 :

 -u, --update
       only append files newer than copy in archive

따라서이 순서는 필요한 것을 수행합니다.

# First create the tar file. It has to be UNCOMPRESSED for -u to work
tar -cvf my.tar some-directory/
# ... update some files in some-directory
# ... add files in some-directory
# Now update only the changed and added files
tar -uvf my.tar some-directory/
# Compress if desired
gzip my.tar

좀 더 자세한 내용은 여기를 참조하십시오 : http://www.gnu.org/software/tar/manual/html_node/how-to-update.html


2
OP는 업데이트 할 수없는 압축 된 아카이브를 업데이트하도록 요청했습니다.
QkiZ

17

솔루션 / 해결 방법

압축 된 TAR 아카이브 ( .tar.gz )를 한 번에 업데이트 할 수 없습니다 . 그러나 충분한 여유 공간이 있으면 다음을 수행 할 수 있습니다.

  1. .tar.gz 파일에서 .tar 파일을 추출 하십시오.

    gunzip filename.tar.gz

  2. 다음 명령으로 압축되지 않은 .tar 파일을 업데이트 하십시오 tar -u.

    tar -uf filename.tar new_file

  3. 업데이트 된 .tar 파일을 압축 하십시오.

    gzip filename.tar

속도를 올리다

멀티 코어 CPU가있는 경우 .gz 파일 을 추출하고 생성 하는 pigz대신 사용 하는 것이 좋습니다 . ( 의 멀티 스레드 구현입니다 )gzippigzgzip

간단하게 교체 gzip/ gunzip명령에 pigz/ unpigz.

관련 매뉴얼


5

파일에서 특정 파일을 업데이트 *.tar.gz하려면 다음을 수행하십시오.

파일을 사용할 수 vi있는 곳에서 입력tar

/home>vi

예를 들어, 디렉토리 아래에있는 simple.tar.gz 를 수정 /home/test/하려면 다음을 수행하십시오.

/home/test>vi

그리고 빈 편집기에서 Enter 키 :n simple.tar.gz를 누르면 Enter 폴더 및 파일 목록이 나타납니다. u 커서를 수정하려는 위치로 커서를 이동하고를 클릭하십시오 Enter. vi특정 파일 의 편집기 가 표시 됩니다. 그런 다음 i파일을 변경하는 옵션입니다. 성공적인 변경 후. Esc키를 누르고 :wq파일 쓰기 및 종료를 선택 하십시오. 그런 다음을 사용 :q하여 파일 목록에서 나오십시오.


1

이 작업을 반복적으로 수행하려는 경우 최적화는 다음과 같습니다.

if [[ -f my.tar.gz ]]; then
    if [[ ! -f my.tar ]]; then
        echo 'No tar, unzipping tar.gz'
        gunzip my.tar.gz
    fi
    tar -uvf my.tar file1 file2 file_new
    gzip -fk my.tar  # This keeps a copy of the tar.
    # -f --force overwrite existing .tar.gz
    # -k --keep Keep the input file (.tar file)
else
    tar -cvzf my.tar.gz file1 file2
fi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.