Я пытаюсь создать файл tar.gz с помощью следующей команды:
sudo tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/
Затем он начинает создавать файлы (много файлов в папке), но затем я получаю следующую ошибку:
tar: dvr_rdk_v1.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
Я не вижу описания этой ошибки, что это значит?
-
действительно имеет значение, потому что GNU tar - это странно. Аргументы опции не могут быть связаны с первым аргументом, когда он не начинается с a-
, поэтому аргумент tof
является следующим аргументом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
Параметр должен непосредственно предшествовать имя файла. Итак, используйтеtar -vczf filename.tar.gz
вместо-vcfz
источник
j
илиz
с этими командами-cvfj
и-cvfz
соответственно.Команда дегтя исторически была одна из немногих команд , которые не следуют в Unix директивы коммунального предприятия синтаксисом .
Страница стандартов для tar говорит:
Хотя правила синтаксиса включают это:
Таким образом, хотя команда, которую вы ввели
tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/
, подойдет для более старых версий tar, некоторые версии tar, написанные для строгого следования рекомендациям по синтаксису утилиты, будут анализировать это как «использоватьz
в качестве аргумента файла для-f
». Таким образом, вы должны использовать следующее для переносимости:источник
Создать архив
Это показывает список файлов и папок
И извлечь снова
источник
tar
.tar
неправильно, хотя приятно хотя бы упомянуть, в чем заключается ключевое отличие (переход-f
к концу)z
чем поставилf
в конце, отсюда мой комментарий.