Как я могу обновить файл tar.gz?

Я создал файл tar.gz (используя графический интерфейс, а не командную строку). Как я могу обновить его с помощью команды добавления новых файлов и обновления измененных файлов?

32
задан 13 March 2013 в 16:54

4 ответа

Обычно вы используете для этого флаг -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

Для более подробного просмотра см. Здесь: 112] http://www.gnu.org/software/tar/manual/html_node/how-to-update.html

0
ответ дан 13 March 2013 в 16:54

Решение / Обходное решение

Вы не можете обновить сжатый архив TAR (.tar.gz) за один шаг. Но, если у Вас есть достаточно свободного пространства, можно сделать это:

  1. Извлеките .tar файл из .tar.gz файла:

    gunzip filename.tar.gz

  2. Обновление распаковало .tar файл с tar -u команда:

    tar -uf filename.tar new_file

  3. Сожмите обновленный .tar файл:

    gzip filename.tar

Ускорение

Если у Вас есть многоядерный ЦП, я рекомендую использовать pigz вместо gzip для извлечения и создают .gz файлы. (pigz многопоточная реализация gzip)

Просто замена gzip/gunzip команды к pigz/unpigz.

Связанные руководства

17
ответ дан 13 March 2013 в 16:54

Если вы собираетесь делать это несколько раз, оптимизация может быть:

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
0
ответ дан 13 March 2013 в 16:54

Если вы хотите обновить определенный файл в файле *.tar.gz, просто выполните следующее:

Введите vi, откуда доступен файл tar

/home>vi

Например, если вы хотите изменить simple.tar.gz , который находится в каталоге /home/test/: kbd> Enter вы получите список папок и файлов, переместите курсор туда, где вы хотите изменить И нажмите Enter . Будет показан редактор vi конкретного файла. Затем i вариант изменить файл. После удачной смены. Нажмите клавишу Esc и выберите :wq для записи и выхода из файла. Затем используйте :q, чтобы выйти из списка файлов.

0
ответ дан 13 March 2013 в 16:54

Другие вопросы по тегам:

Похожие вопросы: