use a opção --directory
de man tar
:
-C,- -directory DIR
change to directory DIR
ou seja:
tar -C /mnt/sdb1/ -czf /mnt/sdb1/old_files/new.tar.gz myfile.csv
Eu tento empacotar um arquivo .csv com tar.gz, estando no diretório raiz.
O arquivo myfile.csv
está localizado em /mnt/sdb1/
Portanto, o nome completo do arquivo é /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, o que 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?
Você tem primeiro cd /mnt/sdb1
e, em seguida, lança o comando tar
.
FYI, você não precisa usar tar
aqui, pois sua finalidade é aglomerar vários arquivos em um tarball. Como você tem apenas um arquivo aqui, use apenas gzip
.
Use a opção -C
para tar:
-C Directory Causes the tar command to perform a chdir subroutine to the directory specified by the Directory variable.