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?
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?
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.
INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"
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 o tailcomando.
tail -c +$(($SIZE+1)) >> # Desconsidere os dados antes de $ SIZE + 1 e retome o restante do arquivo $ OUTFILE.
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.
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.