Como criar um arquivo tar em um diretório diferente?

39

Eu quero criar um arquivo tar em um diretório diferente em vez do diretório atual.

Eu tentei este comando:

tar czf file.tar.gz file1 -C /var/www/

mas ele cria o arquivo no diretório atual. Por quê?

Omid
fonte
3
Você parece ter entendido mal o significado de -C(que não é estranho, pois está documentado vagamente). Para detalhes, consulte serverfault.com/q/416002/86283 .
NN

Respostas:

48

A maneira mais fácil, se você particularmente não precisa usar -Cpara contar tara mudança para algum outro diretório, é simplesmente especificar o caminho completo para o arquivo na linha de comando. Em seguida, você pode estar no diretório que preferir para criar a estrutura de diretório que deseja dentro do arquivo morto.

A seguir, será criado o arquivo /var/www/file.tar.gzmorto e colocado a file1partir do diretório atual (o que quer que seja) nele, sem informações do caminho do arquivo morto .

tar czf /var/www/file.tar.gz file1

O caminho (para o arquivo morto, os arquivos constituintes ou ambos) também pode ser relativo. Se file1estiver dentro /tmp, você estiver dentro /var/spoole quiser criar o arquivo morto /var/www, poderá usar algo como:

tar czf ../www/file1.tar.gz /tmp/file1

Há um milhão de variações sobre o tema, mas isso deve ajudá-lo a começar. Adicione a vbandeira se você quiser ver o que tarrealmente faz.

um CVn
fonte
11
Você também pode usar um caminho relativo.
NN
@NN Absolutamente, mas como não temos idéia do que $PWDé, parecia mais seguro usar um caminho absoluto no exemplo.
um CVn 15/02
Na verdade, apenas pensei que fazia sentido incluir isso para mostrar que é uma opção disponível para resolver o problema.
NN
Dessa forma, o caminho do file1arquivo tar será /tmp. Isso pode ou não ser o que você espera.
Mouviciel
8

Transformo os dados compactados em um fluxo (-) e renomeio e localizo facilmente (>) onde quer que eu escolha (também sempre tar o caminho relativo (./), para que seja mais fácil lidar com a descompressão)

tar -cvf - ./dir-to-compress/* > /location-of-new-file/filename.tar
David King
fonte
Isso não ajuda em arquivos individuais e -Cé muito mais idiomático (e mais curto).
Mahmoud Al-Qudsi
3

Eu acho que deveria ser:
tar czf file.tar.gz -C /var/www/ file1

O que funciona para mim. Diz para mudar de diretório e depois escolher o arquivo.

user2039152
fonte
-2

Funcionou perfeitamente

cd /home; tar -czvf - /var/log/* > varlog.tar.gz
Myhera
fonte