removido acidentalmente do arquivo

6

Estou editando em vi

Eu tentei copiar uma pequena parte do meu trabalho em um arquivo temporário

.,.+40!temp.  

Mas eu escrevi

.,.+40!.  

Então isso removeu tudo nas coisas importantes no arquivo (além daquelas 40 linhas). Existe alguma maneira que eu poderia recuperar o arquivo que eu tinha originalmente (cerca de 30 páginas) ou eu teria que começar do zero?

    
por Guest 15.10.2015 / 19:39

3 respostas

4

Eu não estou familiarizado com o comando que você usou, mas se você não tiver saído do vi , o comando U deverá desfazer a alteração.

Caso contrário, em ordem decrescente de desejo:

  • Em alguns casos, uma versão anterior do arquivo será salva como filename.ext~ (provavelmente não é o seu caso ou você nem teria postado, mas ainda vale a pena tentar).

  • Versões anteriores do arquivo e sua troca podem ser recuperadas usando extundelete , se seu sistema de arquivos permitir (ext3 ou ext4 ). Se apenas a troca for recuperável, strings pode ser usado para extrair grandes faixas de texto. Você ainda precisará remontá-los, mas está muito longe de reescrever tudo do zero.

  • Caso contrário, pode ser possível recuperar grandes partes do texto se você lembrar de algumas palavras ou frases-chave. Isso pode ser uma operação bastante longa. Você pode filtrar a partição inteira para strings via dd e enviar a saída via ssh para outra máquina, para não sobrescrever o espaço livre do disco local (se você tiver outra partição disponível, use-a) ).

  • Da mesma forma, se o sistema não foi reinicializado, você tem acesso root, e o pseudo-arquivo / proc / kcore é de tamanho razoável, você pode extrair texto bruto com strings e copiá-lo para um Arquivo. Então grep será seu amigo. Possivelmente, outras formas de acessar a memória estão disponíveis para você.

por 15.10.2015 / 19:50
1

Se você ainda não salvou nada, pressione a tecla UNDO "U".

Você também pode tentar verificar o arquivo de troca. Deve ser nomeado yourfilename.swp ou .yourfilename.swp , no mesmo diretório ou /var/tmp . Certifique-se de usar ls -la caso o nome comece com . .

Faça uma cópia e abra-a para verificar seu conteúdo.

    
por 15.10.2015 / 19:51
0

Se a sessão em vi ainda estiver aberta, o comando :e! restaurará o arquivo imediatamente para a última versão salva (se você acabou de abri-lo e editá-lo, ele recuperará a mesma versão que você viu quando abriu o arquivo). U (desfazer) funcionará mesmo se você salvou as alterações, mas você precisa desfazer cada ação até chegar à versão desejada (não lembro agora se há um limite de ações de desfazer ... ou quantas são)

    
por 17.10.2015 / 13:47