Как создать разделенный tar-архив на несколько этапов для экономии места?

Если вы хотите выйти из системы после успешного завершения /path/to/shell-script.sh, используйте:

/path/to/shell-script.sh && logout

Более грубый способ сделать это — заставить скрипт убить родителя:

kill -HUP "$PPID"

(PPID — это переменная, которая устанавливается оболочкой bash для одного ).

1
08.01.2021, 00:48
1 ответ

В продолжение превосходного ответа Эдуардо -Трапани ниже приведена слегка измененная версия скрипта, найденного на странице GNU , который ожидает ввода данных пользователем для каждого тома и повторяет попытку, если том не найден:

Для полноты эта команда используется для создания архива:

tar cvf /tmp/volume.tar /path/to/files/ --new-volume-script=./myscript.sh --tape-length=1000M

И это команда, которую я использовал для извлечения разделенного архива:

tar xvf /tmp/volume.tar --multi-volume --new-volume-script=./myscript.sh

myscript.sh:

#!/bin/bash
# For this script it's advisable to use a shell, such as Bash,
# that supports a TAR_FD value greater than 9.

echo "Press enter to continue to next volume"

read

echo Preparing volume $TAR_VOLUME of $TAR_ARCHIVE.

name=`expr $TAR_ARCHIVE : '\(.*\)-.*'`
case $TAR_SUBCOMMAND in
-c)       ;;
-d|-x|-t) test -r ${name:-$TAR_ARCHIVE}-$TAR_VOLUME || echo "Failed to find volume"
          ;;
*)        exit 1
esac

echo ${name:-$TAR_ARCHIVE}-$TAR_VOLUME >&$TAR_FD

Изменить :Это работает только с GNU Tar, который можно установить на macOS (с Homebrew )от:

brew install gnu-tar

Чтобы использовать его в качестве tar по умолчанию, вам нужно будет добавить его в свой путь следующим образом:

export PATH="$(brew --prefix)/opt/python/libexec/bin:$PATH"
1
18.03.2021, 22:37

Теги

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