tar: Como criar um arquivo tar com diretórios principais arbitrários sem 'cd'ing para o diretório pai


23

Digamos que eu tenha um diretório de arquivos em

/home/user1/dir1

e eu quero criar um tar com apenas "dir1" como o diretório principal:

/dir1/file1
/dir1/file2

Eu sei que posso primeiro cd para o diretório

cd /home/user1/
tar czvf dir1.tar.gz dir1

Mas, ao escrever scripts, saltar de um diretório para outro nem sempre é favorável. Gostaria de saber se existe uma maneira de fazê-lo com caminhos absolutos sem alterar os diretórios atuais?

Eu sei que sempre posso criar um arquivo tar com caminhos absolutos DENTRO e usar

--strip-components 

ao extrair, mas às vezes nomes de caminho extras, são informações privadas extras que você não deseja distribuir com seus arquivos tar.

Obrigado!

Respostas:


24

O diretório tar -C muda

tar -C /home/user1/ -cvzf dir1.tar.gz dir1

btw, um prático para acompanhar mudanças de diretórios ... use pushd e popd.

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd

1
Obrigado. Eu não sabia que a opção "-C" deve ser usada antes de outras opções ... Tentei "tar -cvzf dir1.tar.gz dir1 -C / home / user1 /" antes, mas não funcionou.
197 Yan

1
Não funciona: tar: dir: Não é possível status: Nenhum tal lima ou diretório (supondo dir1 está sob / home / user1 /)
tribbloid

21

Com o gnu tar, você pode criar um arquivo com um diretório base diferente do atual com:

tar -c --transform 's,^\.,mybasedir,' .

Basta adaptar a expressão sed às suas necessidades.


5

OK, eu também descobri que

tar -czvf file1.tar.gz /home/user1/dir1/../dir1

também funcionou do jeito que eu queria.


Embora wildcards como "*", então não funcionam
Curtis Yallop

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.