Bzip2 функция exec завершилась с ошибкой нет такого файла или каталога

Обновлено: 06.07.2024

В качестве инструмента для архивации данных в Linux используются разные программы. Например архиватор Zip Linux, приобретший большую популярность из-за совместимости с ОС Windows. Но это не стандартная для системы программа. Поэтому хотелось бы осветить команду tar Linux — встроенный архиватор.

Изначально tar использовалась для архивации данных на ленточных устройствах. Но также она позволяет записывать вывод в файл, и этот способ стал широко применяться в Linux по своему назначению. Здесь будут рассмотрены самые распространенные варианты работы с этой утилитой.

Синтаксис команды tar

Синтаксис команд для создания и распаковки архива практически не отличается (в том числе с утилитами сжатия bzip2 или gzip). Так, чтобы создать новый архив, в терминале используется следующая конструкция:

tar опции архив.tar файлы_для_архивации

Для его распаковки:

tar опции архив.tar

Функции, которые может выполнять команда:

Функция Длинный
формат
Описание
-A --concatenate Присоединить существующий архив к другому
-c --create Создать новый архив
-d --diff
--delete
Проверить различие между архивами
Удалить из существующего архива файл
-r --append Присоединить файлы к концу архива
-t --list Сформировать список содержимого архива
-u --update Обновить архив более новыми файлами с тем же именем
-x --extract Извлечь файлы из архива

При определении каждой функции используются параметры, которые регламентируют выполнение конкретных операций с tar-архивом:

А дальше рассмотрим примеры того, как может применяться команда tar Linux.

Как пользоваться tar

1. Создание архива tar

С помощью следующей команды создается архив archive.tar с подробным выводом информации, включающий файлы file1, file2 и file3:

tar --totals --create --verbose --file archive.tar file1 file2 file3

Но длинные опции и параметры можно заменить (при возможности) однобуквенными значениями:

tar --totals -cvf archive.tar file1 file2 file3

Создание архива tar

2. Просмотр содержимого архива

Следующая команда выводит содержимое архива, не распаковывая его:

tar -tf archive.tar

Отображение архива

3. Распаковка архива tar Linux

Распаковывает архив test.tar с выводом файлов на экран:

tar -xvf archive.tar

Распаковка архива

Чтобы сделать это в другой каталог, можно воспользоваться параметром -C:

tar -C "Test" -xvf archive.tar

Распаковка в другой каталог

3. Работа со сжатыми архивами

Следует помнить, что tar только создаёт архив, но не сжимает. Для этого используются упомянутые компрессорные утилиты bzip2 и gzip. Файлы, сжатые с их помощью, имеют соответствующие расширения .tar.bz2 и .tar.gz. Чтобы создать сжатый архив с помощью bzip2, введите:

tar -cjvf archive.tar.bz2 file1 file2 file3

Сжатие в bz2

Синтаксис для gzip отличается одной буквой в параметрах, и меняется окончание расширения архива:

tar -czvf archive.tar.gz file1 file2 file3

Сжатие в gz

При распаковке tar-архивов с таким расширением следует указывать соответствующую опцию:

tar -C "Test" -xjvf arhive.tar.bz2

Распаковка bz2

tar -xzvf archive.tar.gz

Распаковка gz

На заметку: архиватор tar — одна из немногих утилит в GNU/Linux, в которой перед использованием однобуквенных параметров, стоящих вместе, можно не ставить знак дефиса.

Выводы

В этой статье была рассмотрена команда tar Linux, которая используется для архивации файлов и поставляется по умолчанию во всех дистрибутивах. В её возможности входит создание и распаковка архива файлов без их сжатия. Для сжатия утилита применяется в связке с популярными компрессорами bzip2 и gzip.

Я пытаюсь создать файл tar.gz с помощью следующей команды:

Затем он начинает создавать файлы (много файлов в папке), но затем я получаю следующую ошибку:

Я не вижу описания этой ошибки, что это значит?

Удалить - из vcfz вариантов. tar не нужен дефис для опций.

Аргументом для -f опции является дефис z . Таким образом, команда пытается выполнить архивирование dvr_rdk_v1.tar.gz и вызывается в dvr_rdk архиве z . Без дефиса семантика параметров изменяется, так что следующий аргумент в командной строке, то есть имя файла вашего архива, становится аргументом для f флага.

Также проверьте разрешение на запись в каталог, из которого вы выполняете команду.

Это не нуждается в дефисах, но они не должны быть проблемой, они просто необязательны @MichaelMrozek На самом деле удаление - действительно имеет значение, потому что GNU tar - это странно. Аргументы опции не могут быть связаны с первым аргументом, когда он не начинается с a - , поэтому аргумент to f является следующим аргументом tar , и, следовательно tar vcfz dvr_rdk_v1.tar.gz , эквивалентен tar -v -c -f dvr_rdk_v1.tar.gz -z . Я также понял, удастся ли мне удалить z или j сжатие архива будет успешным даже при - включенном. Когда я добавляю дефис, он включается, он обрабатывает последний символ в опции как «файл». В результате я получаю j или z в виде архивного файла, если я использую эту опцию -cvfz или -cvfj . Сводка: если «f» встречается как опция, отличная от последней, команда не будет выполнять то, что предполагалось. Я не понимаю, как Gnu не может добавить предупреждение, когда обнаруживает такую ​​серьезную и легко обнаруживаемую проблему. Я просто потратил 40 минут на отладку этой странности. Этот, должно быть, потратил сотни тысяч человеко-часов производительности.

-f Параметр должен непосредственно предшествовать имя файла. Итак, используйте tar -vczf filename.tar.gz вместо -vcfz

Ах, это объясняет, почему команда, которую я использую, пытается создать сжатый архивный файл, который вызывается j или z с этими командами -cvfj и -cvfz соответственно.

Команда дегтя исторически была одна из немногих команд , которые не следуют в Unix директивы коммунального предприятия синтаксисом .

f
Используйте первый файловый операнд (или второй, если b уже указан) в качестве имени архива вместо системно-зависимого значения по умолчанию

Хотя правила синтаксиса включают это:

Рекомендация 5.
Один или несколько параметров без аргументов-параметров, за которыми следует не более одного параметра, который принимает аргумент-параметр, должны приниматься при группировании за одним разделителем '-'.

Читайте также: