Estou tentando criar o arquivo tar.gz usando o seguinte comando:
sudo tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/
Em seguida, ele começa a criar arquivos (muitos arquivos na pasta), mas então eu recebo o seguinte erro:
tar: dvr_rdk_v1.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
Não vejo nenhuma descrição desse erro, o que isso significa?
-
faz a diferença, porque o tar do GNU é peculiar. Os argumentos da opção não podem ser agrupados no primeiro argumento quando não começam com a-
, portanto, o argumento paraf
é o próximo argumento etar
, portanto,tar vcfz dvr_rdk_v1.tar.gz
é equivalente atar -v -c -f dvr_rdk_v1.tar.gz -z
.z
ouj
a compactação do arquivo for bem-sucedida, mesmo com os-
envolvidos. Quando adiciono o hífen, ele trata o último caractere da opção como um "arquivo". Portanto, como resultado, receboj
ouz
como um arquivo arquivado, se eu usar essa opção-cvfz
ou-cvfj
.A
-f
opção deve preceder diretamente o nome do arquivo. Então, use emtar -vczf filename.tar.gz
vez de-vcfz
fonte
j
ouz
com esses comandos-cvfj
e-cvfz
respectivamente.O comando tar historicamente tem sido um dos poucos comandos que não seguem as diretrizes de sintaxe do utilitário Unix .
A página de padrões para o tar diz:
Embora as diretrizes de sintaxe incluam isso:
Portanto, enquanto o comando que você digitou
tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/
seria bom em versões mais antigas do tar, certas versões do tar que são escritas para seguir estritamente as diretrizes de sintaxe do utilitário analisam isso como "usarz
como argumento de arquivo-f
". Portanto, você deve usar o seguinte para ser portátil:fonte
Para criar o arquivo morto
Isso mostra a lista de arquivos e pastas
E para extrair novamente
fonte
tar
.tar
errado, embora agradável que da a pelo menos menção que a diferença fundamental é (se movendo-f
para o final)z
que colocarf
no final, daí o meu comentário.