tar: Como criar um arquivo tar com diretórios arbitrários à esquerda sem 'cd'ing para dir pai

17

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, pular de diretório para diretório nem sempre é favorável. Eu estou querendo saber se existe uma maneira de fazer isso 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 particulares extras que você não deseja distribuir com seus arquivos tar.

Obrigado!

    
por Yan 19.11.2009 / 22:55

4 respostas

20

tar -C muda de diretório

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

btw, útil para acompanhar as mudanças de diretórios ... use pushd e popd.

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd
    
por 19.11.2009 / 23:06
17

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

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

Adapte a expressão sed às suas necessidades.

    
por 04.12.2012 / 17:46
4

OK, também descobri que

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

também funcionou do jeito que eu queria.

    
por 19.11.2009 / 23:13
1
tar -C /home/user1/dir -c .
    
por 19.11.2009 / 23:02