Como extrair / apagar arquivos antigos de um tarball que foi atualizado

3

Eu tenho um tarball chamado test.tar que criei pela primeira vez executando:

echo start > 1
tar -cf test.tar 1

Em seguida, atualize-o por:

echo end > 1
tar -uf test.tar 1

Agora, se eu obtiver uma lista de arquivos dentro deste arquivo tar:

$ tar -tx test.tar

Isso me dá:

1
1

Se eu tentar ver o que há nesses arquivos:

$ tar -xOf test.tar

start
end

E finalmente, quando quero extraí-lo:

$ tar -xf test.tar 1
$ cat 1
end

Existe alguma maneira de extrair a versão antiga de 1 ? (aquele que contém start ).

Outra coisa é excluir esses arquivos, quando eu uso o parâmetro --delete , ele deletará todos os arquivos com esse nome do arquivo. Como posso excluir apenas o antigo ou o novo?

    
por Ravexina 01.05.2017 / 17:21

1 resposta

3

Em aqui :

--occurrence[=number]

This option can be used in conjunction with one of the subcommands >--delete, --diff, --extract or --list when a list of files is given >either on the command line or via -T option.

This option instructs tar to process only the numberth occurrence of > each named file. Number defaults to 1, so

tar -x -f archive.tar --occurrence filename

will extract the first occurrence of the member filename' from >archive.tar' and will terminate without scanning to the end of the archive.

Então, no seu caso, para extrair o uso da versão antiga:

tar -xf test.tar --occurrence=1 1

E para a eliminação,

tar --delete -f test.tar --occurrence=1 1

Outra solução para extrair ambas as versões é simplesmente usar --backup switch:

tar -xf test.tar --backup

Ele irá extrair seus arquivos como:

1
1~

Qual 1~ é o antigo. Se você tiver mais de duas versões, use --occurrence em vez disso.

Você também pode usar -w para usar o modo interativo tar :

tar -xf test.tar -w

Desta vez, tar pergunta por cada ação, você pode escolher a primeira versão ou a última versão a ser extraída por y/n .

    
por 01.05.2017 / 19:44