Compactando uma pasta (tar) sem o diretório que contém no nome da pasta

21

Estou tentando compactar uma pasta com o tarcomando

Quando estou tentando compactá-lo, funciona bem. O problema está no nome do arquivo.

Caminho de origem:

/data/file/

Caminho de destino:

/data/repo/temp/file.tar.gz

tar zcvf $srcpath $destinationpath

Estou executando o comando de uma pasta diferente e, ao extrair a pasta, estou obtendo todos os subdiretórios em vez da pasta de arquivo sozinha.

Seetha Raman
fonte
11
A sintaxe do tar é: tar zcvf file.tar.gz /path/dir/to/compresstalvez você deva alterar seu comando, tar zcvf $destinationpath $srcpathmas não está claro para mim o que você precisa. Você poderia elaborar sua pergunta com um exemplo do que você espera do comando tar?
Lety
obrigado pelo comentário, meu problema é o seguinte ao comentário que você compartilhou aqui "tar zcvf file.tar.gz / caminho / dir / para / compres" isso deve funcionar bem se estivermos no mesmo diretório "arquivo" meu caso é estamos trabalhando em um diretório diferente, por exemplo: / home / testuser1 / file: file é a pasta que eu quero compactar e estou extraindo o comando da raiz que não está em casa, portanto, podemos precisar fornecer o caminho inteiro para a pasta enquanto extraímos estou recebendo todos os subdiretórios do / home / testuser1 / arquivo em vez de pasta de arquivo
Sita Raman
Provavelmente, um erro de digitação, mas no seu exemplo, você misturou origem e destino.
Jacob Vlijm

Respostas:

49

A maneira mais fácil de fazer isso é fazer o cd no diretório primeiro:

cd /path/to/containing/folder && tar -zcvf tarfile.tar.gz foldername_tocompress

Para que o diretório da pasta (contendo) se torne o diretório raiz do seu arquivo compactado.

Um pouco mais avançado é usar a opção -C:

tar -zcvf tarfile.tar.gz -C /path/to/foldername_tocompress .

Isso cria um tar.gzarquivo no diretório atual (de trabalho), contendo todos os arquivos / pastas foldername_tocompress(observe o ponto, dizendo que todos os arquivos / pastas devem ser incluídos).

Jacob Vlijm
fonte
4
O ponto no final do seu segundo comando vai incluir todos os arquivos no diretório atual ...
David Duncan