Arquivo de pacote com tar.gz do diretório raiz

8

Eu tento compactar um arquivo .csv com tar.gz, enquanto estiver no diretório raiz.

O arquivo myfile.csvestá localizado em /mnt/sdb1/ Portanto, o nome do arquivo completo é/mnt/sdb1/myfile.csv

Eu tento salvar o tar.gz em /mnt/sdb1/old_files

Eu tentei assim:

tar -czf /mnt/sdb1/old_files/new.tar.gz mnt/sdb1/myfile.csv

Mas quando eu extraio o arquivo, uma pasta com o nome "mnt" será extraída e contém outra pasta chamada "sdb1", que contém o arquivo.

É possível compactar apenas o arquivo, em vez de copiar todos os diretórios?

Preto
fonte

Respostas:

12

use a --directoryopção de man tar:

-C, - DIR do diretório

mude para o diretório DIR

ou seja:

tar -C /mnt/sdb1/ -czf /mnt/sdb1/old_files/new.tar.gz myfile.csv
Fiximan
fonte
Obrigado Fiximan! Isso resolveu o problema. Vou votar assim que tiver 15 reputação.
Preto
3

Você precisa primeiro e cd /mnt/sdb1, em seguida, inicie o tarcomando.

Para sua informação, você não precisa usar taraqui, pois seu objetivo é aglomerar vários arquivos em um tarball. Como você tem apenas um arquivo aqui, basta usar gzip.

dr_
fonte
Eu sei, mas tenho que fazê-lo no diretório raiz, porque executo o comando a partir de um script.
Preto
1
Cara, basta adicionar o cdcomando antes tar, para que você possa voltar ou usar cd /mnt/sdb1 && tar -czf new.tar.gz myfile.csv && cd /se preferir um cmd de linha.
McSinyx
@McSinyx O problema é que o diretório não é salvo, mesmo quando eu executo cd /mnt/sdb1/, eu estarei no diretório raiz novamente na próxima execução de um comando. Mas sua segunda solução parece lógica para mim, eu tento.
Preto
@McSinyx NICE! Funciona :) Obrigado, isso será MUITO útil!
Preto
@ EdwardBlack Você pode executar um script de qualquer lugar, basta adicionar os caminhos absolutos relevantes. Em geral, o uso de caminhos relativos é uma má idéia, pois pode quebrar as coisas facilmente.
Dr_
1

Use a -Copção para tar:

   -C Directory
        Causes the tar command to perform a chdir subroutine to the
        directory specified by the Directory variable.
Jeff Schaller
fonte