Como tar um diretório para um diretório diferente?

4

Como faço para compactar uma pasta (tar1) e enviar essa pasta compactada para um diretório diferente (digamos, chamado tar2).

Eu verifiquei as perguntas aqui, e a maioria delas está usando um arquivo, não um diretório, e tenho tentado todas as combinações, mas não consigo fazer funcionar direito.

No meu ~ eu tenho:

tar1/
  a.txt
  b.txt
tar2/

Tar1 / tem um arquivo de teste chamado a.txt e b.txt nele. Eu quero comprimir essa pasta e colocá-lo em tar2 /

Então, depois, seria parecido com:

tar1/
 a.txt
 b.txt
tar2/
 tar1.gz
     a.txt
     b.txt

Eu estava tentando

tar czvf tar2/ tar1/

(Um livro de referência que eu dei deu um exemplo nessa sintaxe, onde o primeiro caminho é o lugar onde você quer armazená-lo, e o segundo caminho é o que você quer criar o arquivo.

Eu também tentei algumas coisas com -C como meu destino:

tar cvzf tar1/ -C tar2/

Esperando que isso leve tar1 / comprima o diretório e coloque isso no tar2

Eu recebi este erro

tar: Cowardly refusing to create an empty archive

Try tar --help' ortar --usage' for more information.

Estou no RHEL 6.7

    
por robromo 14.10.2016 / 17:08

2 respostas

2

Você não está especificando um arquivo em suas declarações. Deve ser algo como:

tar -cvf tar2/tar1.tar tar1/

Isso coloca o tarball tar1.tar dentro do diretório tar2/ .

Antes:

tree tar*
tar1
├── a.txt
└── b.txt
tar2
├── a.txt
└── b.txt

0 directories, 4 files

Depois:

tar -cvf tar2/tar1.tar tar1/
tar1/
tar1/a.txt
tar1/b.txt

tree tar*
tar1
├── a.txt
└── b.txt
tar2
├── a.txt
├── b.txt
└── tar1.tar

0 directories, 5 files

Ambiente:

Distributor ID: Debian
Description:    Debian GNU/Linux 8.6 (jessie)
Release:    8.6
Codename:   jessie
    
por 14.10.2016 / 17:12
0

O que você está realmente tentando fazer é enterrado em um comentário para outra resposta . tar obviamente não é um pré-requisito, nem a compressão é realmente.

Então, veja como fazer isso com pax .

Para criar um arquivo compactado de tar1/* (mas sem o prefixo tar1/ ) em tar2/tar1.tar.gz :

( cd tar1/ && pax -z -w * > ../tar2/tar1.tar.gz )

Para copiar toda a hierarquia diretamente de tar1/ para tar2/ sem um arquivo intermediário e preservando tudo :

( cd tar1/ && pax -p e -r -w * ../tar2/ )

Observe que o shell não incluirá arquivos de ponto em sua expansão de * , é claro. Lidar com isso da maneira usual, se acontecer de ser um problema.

    
por 14.10.2016 / 18:27

Tags