tar.gzファイルを更新するにはどうすればよいですか?


回答:


28

通常、これには-uフラグを使用します。tarのmanページから:

 -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

18

解決策/回避策

圧縮された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を使用している場合pigzgzip.gzファイルを抽出して作成する代わりに使用することをお勧めします。(pigzはのマルチスレッド実装ですgzip

単純に置き換える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て、フォルダーとファイルの一覧を取得し、変更する場所にカーソルを移動して、をクリックしますEntervi特定のファイルのエディターが表示されます。次に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.