Согласно этой странице , tar может создать архив tar, «разбитый» на файлы размером 100 Мб:
tar -c -M --tape-length = 102400 --file = disk1.tar largefile.tgz
Проблема в том, что эта команда потребует, чтобы вы в интерактивном режиме дали новое имя файла для следующего файла после заполнения первого файла.
Кто-нибудь знает способ пропустить этот интерактивный шаг, и позволить tar автоматически выполнять «расщепление»?
Ответы:
Посмотрите на
--new-volume-script
опцию, которая позволяет заменить механизм подсказок другим механизмом или сгенерированным именем файла. ((tar.info)Multi-Volume Archives
наtar
информационной странице.) Проблема вsplit
том, что вам нужноcat
собирать части, чтобы что-то делать, тогда как многотомный архив должен быть немного более гибким.источник
Вы можете использовать сплит для этого:
Это говорит tar отправлять данные в stdout и разбивать, чтобы выбрать их из stdin - дополнительно с использованием числового суффикса (
-d
), размера чанка (-b
) 100M и использования «tardisk» в качестве основы для результирующих имен файлов (tardisk00, tardisk01, tardisk02 и т. д.).Чтобы извлечь данные впоследствии, вы можете использовать это:
источник
-d
для числового суффикса, а не префикса.Конечно, лучший вариант - это
--new-volume-script
вариант.Но, если вы знаете размер файла (в данном случае, largefile.tgz), то вы можете сделать это также:
Резюме:
(Для -L укажите столько, сколько необходимо, чтобы общая сумма файлов tar была больше, чем largefile.tgz)
Если вы пытаетесь
tar
создать структуру дерева каталоговисточник
Я получил его для работы со следующими командами:
Единственная проблема заключается в том,
part_1.tar
что на самом деле будет последний файл, а остальные сдвинуты на один. Т.е.part_2.tar
на самом деле первая часть, иpart_k.tar
это(n - 1)
й часть. Исправить это с помощью некоторого сценария оболочки - тривиально и оставлено в качестве упражнения для читателя.источник
он автоматически создаст файлы размером 1,1 ГБ. Если размер tar больше, вы можете увеличить это число, например, 1000 {2..1000} или увеличить входной аргумент до длины ленты.
источник