colocando arquivos no subdiretório enquanto faz o tar

1

Eu estou tentando fazer um arquivo tar. Eu tenho 2 pastas que preciso tar. deixe-me esclarecer minha pergunta.

folder 1. /temp1
folder 2. /temp1

agora eu quero que minha saída tar seja tal que quando eu descompacte eu recebo

 /temp1/* (stuff of temp1)
 /temp1/temp2/* (temp2 and subdirectories inside temp1).

Agora estou copiando o temp2 para o temp1 e depois para o tarring. Alguém pode me sugerir fazer de uma maneira que eu não tenha que copiar as coisas, como se eu matasse o processo entre eu deixaria algumas das coisas da temp2 dentro da temp1.

    
por Lokesh Sharma 29.03.2016 / 11:27

2 respostas

1

Symlink temp2 em temp1 e, em seguida, diga ao tar para excluir a referência (siga) o symlink com a opção -h ou --dereference .

por exemplo,

cd temp1
ln -s ../temp2/ .
cd ..
tar cvz -h -f example.tar.gz ./temp1
rm -f temp1/temp2

Isso criará um arquivo tar com ./temp2 abaixo do diretório ./temp1 (por exemplo, ./temp1/temp2 )

Não me lembro se essa opção -h é uma extensão do GNU ou não. Se você não estiver usando o GNU tar , teste cuidadosamente antes de usar.

Se você se preocupa com o registro de data e hora da modificação de temp1, use touch -r :

touch -r temp1 temp1-modtime
cd temp1
ln -s ../temp2/ .
cd ..
touch -r temp1-modtime temp1
tar cvz -h -f example.tar.gz ./temp1
rm -f temp1/temp2
touch -r temp1-modtime temp1
rm -f temp1-modtime
    
por 29.03.2016 / 11:41
0

Use a função tar append com alguns truques. Algo assim?

$ mkdir temp3; mkdir temp3/temp1    # create another, empty temp1 dir
$ ln temp2 temp3/temp1/temp2        # link temp2 into fake temp1

e depois ...

$ tar cf example.tar temp1      # 1st part of archive without temp2
$ cd temp3
$ tar rf ../example.tar temp1   # append temp2 as subfolder of temp1 to archive

O uso de hard links torna possível ainda ter links simbólicos nos diretórios temporários tratados como links simbólicos. Então não é necessário. Pode deixar você longe de problemas mais tarde.

Você também pode dar uma olhada nas extensões tar do GNU como --transform em combinação com o comando append. Veja também: link

    
por 29.03.2016 / 14:02

Tags