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.