Como faço para retomar um comando tar que foi morto
11
Eu estava fazendo um: tar -cvfe eu tive que matá-lo com ctrl-C. Eu sei que deveria ter feito um Ctrl-Ze depois trazer de volta a tarefa para o primeiro plano ... mas não é a história.
Posso retomar a partir do ponto em que parei a tarefa?
Existe um arquivo tar incompleto no local de destino?
Karthik T
Sim, existe um alcatrão incompleto.
Mthpvg 06/12/12
Respostas:
11
Este método recriará seu arquivo tar e anexará a parte final ao arquivo existente. Isso pode ser útil se você fizer backup em uma conexão de rede. Você provavelmente resultará em um arquivo corrompido se algum dos dados em seu INFILES tiver sido alterado. Certifique-se de testar seu arquivo após a conclusão.
Altere INFILES e OUTFILE para os nomes corretos na linha a seguir.
Presumo que isso seja mais rápido do que apenas reiniciar o processo tar, porque na verdade não está gravando nada no disco?
Tyler
2
A melhor solução seria excluir o arquivo tar e reiniciar o processo nohupanexado com &. Como alternativa, você pode executar tar -tfve usar isso como uma exclusão para o novo tar -cvf.
tar -cvfsubstituirá o arquivo existente. Você quis dizer tar -rvf? Além disso, o último arquivo gravado no arquivo provavelmente estava incompleto.
Gilles 'SO- stop be evil'
Portanto, a idéia é fazer uma lista dos arquivos que já estão no tarball, menos o último que provavelmente está incompleto. E depois executar um tar -rvf?
O que faço no caso de ter um tararquivo incompleto , crio uma lista dos arquivos no arquivo:
tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done
O sedcomando exclui todas as linhas que possuem uma barra: Estes são diretórios, não arquivos, e queremos despejar os diretórios novamente e pular apenas esses arquivos nesses diretórios, que já temos no primeiro arquivo tar. Além disso, deixamos de sedexcluir o último nome do arquivo, porque ele provavelmente foi despejado apenas parcialmente, portanto, o arquivaremos novamente.
Em seguida, basta passar a files-donelista através da opção -X para um novo tarcomando:
tar cfvX archive2.tar files-done SOURCEDIR
Certifique-se de usar um nome de arquivo de saída diferente no novo comando tar, ou você substituirá seu arquivo parcial. Não tente anexar diretamente ao arquivo tar corrompido.
Respostas:
Este método recriará seu arquivo tar e anexará a parte final ao arquivo existente. Isso pode ser útil se você fizer backup em uma conexão de rede. Você provavelmente resultará em um arquivo corrompido se algum dos dados em seu INFILES tiver sido alterado. Certifique-se de testar seu arquivo após a conclusão.
Altere INFILES e OUTFILE para os nomes corretos na linha a seguir.
Explicação:
SIZE="$(wc -c < $OUTFILE)"
# Obtenha o tamanho atual do arquivo.tar -cz --to-stdout "$INFILES" |
# Comece a criar archive e envie a saída para otail
comando.tail -c +$(($SIZE+1)) >>
# Desconsidere os dados antes de $ SIZE + 1 e retome o restante do arquivo $ OUTFILE.fonte
A melhor solução seria excluir o arquivo tar e reiniciar o processo
nohup
anexado com&
. Como alternativa, você pode executartar -tfv
e usar isso como uma exclusão para o novotar -cvf
.fonte
tar -cvf
substituirá o arquivo existente. Você quis dizertar -rvf
? Além disso, o último arquivo gravado no arquivo provavelmente estava incompleto.tar -rvf
?Você não pode; você só precisa começar de novo.
fonte
O que faço no caso de ter um
tar
arquivo incompleto , crio uma lista dos arquivos no arquivo:O
sed
comando exclui todas as linhas que possuem uma barra: Estes são diretórios, não arquivos, e queremos despejar os diretórios novamente e pular apenas esses arquivos nesses diretórios, que já temos no primeiro arquivo tar. Além disso, deixamos desed
excluir o último nome do arquivo, porque ele provavelmente foi despejado apenas parcialmente, portanto, o arquivaremos novamente.Em seguida, basta passar a
files-done
lista através da opção -X para um novotar
comando:Certifique-se de usar um nome de arquivo de saída diferente no novo comando tar, ou você substituirá seu arquivo parcial. Não tente anexar diretamente ao arquivo tar corrompido.
fonte