Desfaz o comando do lixo do Linux

23

Podemos desfazer operações feitas em um terminal, por exemplo, exclusão de arquivos através de rm ?

Solutions obtained:

  1. Aliasing
  2. Undelete utilities
  3. Backup utilities
  4. LibTrash
  5. Versioning (FUSE)
    
por cdb 28.08.2009 / 08:00

12 respostas

61

Não há "desfazer" geral para todas as operações no terminal. Se você deseja recuperar um arquivo depois de usar rm , precisará procurar no software de recuperação.

Uma opção para evitar erros futuros é tornar alias es para comandos alternativos para remover arquivos. Adicione-os ao seu ~/.bashrc e crie o hábito de usá-los em vez de rm .

  1. alias rmi='rm -i'

    Se você usar rmi , você será solicitado a confirmar as exclusões futuras. Tente evitar o hábito de pressionar y imediatamente depois de emitir um comando rmi , pois isso irá anular o propósito.

  2. Você também pode mover os arquivos excluídos pelo comando trsh no terminal para sua lixeira (no KDE e no Gnome):

    alias trsh='mv --target-directory="$HOME/.Trash"'
    

    Se você usar trsh , você terá um recurso "undelete" limitado. Cuidado com isso

    trsh dir1/file1 dir2/file1
    

    ainda pode causar perda de dados irrecuperável.

por 28.08.2009 / 08:02
6

Não há lixeira para a linha de comando.

Você pode experimentar alguns dos vários utilitários undelete, mas não há garantia de que eles funcionariam.

    
por 28.08.2009 / 08:02
5

Você pode usar trash-cli se usar o KDE ao executar um GUI. Este é o utilitário de linha de comando para excluir / restaurar usando as instalações de lixo do KDE.

    
por 29.08.2009 / 10:04
4

Você pode tornar rm um alias para o comando trash (você precisará instalar trash primeiro.) Adicione isto ao seu ~/.bashrc :

alias rm='trash'

Isso é preferível a alias rm='mv --target-directory=$HOME/.Trash' , já que ~ / .Trash NÃO é a pasta de lixo do gnome. É melhor IMHO deixar trash descobrir onde está a pasta de lixo atual.

btw eu teria postado isso em um comentário, mas eu não tenho o suficiente.

    
por 31.08.2009 / 05:03
3

Mais duas soluções técnicas ainda não foram nomeadas:

  1. libtrash : Uma biblioteca dinâmica que pode ser pré-carregada em seu shell que intercepta a exclusão / remoção de syscalls e move os arquivos para uma pasta de lixo (como um alias, mas funciona para qualquer aplicativo quando pré-carregado).
  2. Um sistema de arquivos de versão. Se você excluir (ou editar, copiar ou ...) um arquivo, poderá reverter para um estado antigo. Isso pode ser feito com um sistema de arquivos FUSE e um dos seus versioning filesystems .
por 14.09.2009 / 12:37
3

Há uma questão maior aqui que vale a pena abordar. Os comandos do shell não são chatty (eles não checam o que você quer), e eles esperam que você saiba o que está fazendo. Isso é fundamental para como eles são projetados . É uma característica, não um bug.

Algumas pessoas se sentem machistas quando usam tais comandos, o que eu acho bastante bobo, mas é importante para entender os perigos. Você pode causar muito dano em um terminal, mesmo que você não seja root. Eu acho que você provavelmente só se importava com rm , mas desde que você disse "Podemos desfazer as operações feitas no terminal", eu achei que valeria a pena dizer isso. A resposta geral é não, você não pode.

    
por 31.08.2009 / 04:42
2

Opção 1: veja o Undelete Linux Arquivos de um sistema de arquivos ext2 . Esta página aponta para um programa, escrito por Sebastian Hetze da empresa LunetIX, que (como o título sugere) desfaz a exclusão de arquivos recentemente apagados de um sistema de arquivos ext2. Exemplo de uso:

# undelete -d /dev/hdc3 -a 10

Avisos:

  • O site original desapareceu. O link, acima, é para o arquivo da Internet.
  • O (s) site (s) estão em uma mistura de inglês e alemão.
  • Como dito acima, a ferramenta é projetada especificamente para o sistema de arquivos ext2. É improvável que funcione em qualquer outro tipo de sistema de arquivos; especialmente os que não são ext N .

Opção 2: tenho o rsnapshot (rsync) em execução na minha máquina, que faz instantâneos de hora em hora das minhas pastas selecionadas. Isso incrementalmente faz isso a cada hora, 2 horas ou o que quer que você diga CRON para fazer. Depois de um dia inteiro, ele recicla esses instantâneos em um instantâneo diário e depois de 7 dias em um semanário e assim por diante. Isso me faz voltar no tempo cerca de um mês para cada hora! É muito bom com espaço em disco, pois cria links simbólicos para arquivos que nunca mudaram ...

    
por 28.08.2009 / 11:14
1

Recupere-se usando o grep em /dev/partition ( Linux ou Unix Recupere os arquivos excluídos - undelete arquivos ),

grep -b 'search-text' /dev/partition > file.txt

Apenas uma tentativa.

    
por 31.08.2009 / 10:47
1

Existem utilitários undelete para o ext2, mas a maioria dos outros sistemas de arquivos Linux estão presos na Idade da Pedra e não possuem nenhum recurso de usabilidade avançado. Um estado de coisas triste considerando unidades gigantescas com espaço suficiente para nunca excluir um arquivo novamente é comum.

Então você está preso a três opções:

  1. Faça backup regularmente, por exemplo, com um comando como:

    rsync -axvRP --backup --backupdir=/backup/incr/$(date -I) /home/ /backup/root/

  2. Use uma ferramenta de controle de versão, como git , para todo o seu trabalho. Embora isso não proteja contra um rm -r maluco que mata o repositório, ele protege contra problemas comuns, pois você usará git rm não raw rm .

  3. Seja extremamente cuidadoso e não confie muito em rm -i , trash-cli e amigos, pois a maioria dos dados que você perderá no shell não será perdida acidentalmente em rm , mas por canos mal direcionados , arquivos de saída com erros de digitação, mv e coisas do tipo mal direcionadas, isto é, coisas que sobrescrevem seus dados, e não apenas os excluem.

Faça todos os três para o máximo de segurança.

    
por 09.09.2009 / 18:10
0

verifique isso ... pode ser útil link

suponha que você fez

rm very_important_file

do terminal. recuperar este arquivo é um processo tedioso e nem sempre bem sucedido

em vez disso, se você usou o script mencionado acima. você não precisa se preocupar com isso porque

rm very_important_file
mv very_important_file ~/.Trash/

são equivalentes. o script manipula mais casos e não altera seu sistema rm e isso é porque ele é colocado na pasta bin local do usuário para que ele faça sombra ao sistema rm e ainda assim não o afete ou desabilite o uso dele

essa é uma abordagem de aliasing refinada, mas sem perder nenhum recurso

    
por 07.12.2013 / 08:43
0

TestDisk pode recuperar arquivos de FAT, exFAT, NTFS e ext2 sistemas de arquivos.

    
por 29.05.2014 / 01:45
0

Para mim (opensuse, salto 42.2, pendrive NTFS) PhotoRec - também por testdisk criadores - funcionou :) No entanto, ele não recuperou os nomes dos arquivos.

PhotoRec is file data recovery software designed to recover lost files including video, documents and archives from hard disks, CD-ROMs, and lost pictures (thus the Photo Recovery name) from digital camera memory. PhotoRec ignores the file system and goes after the underlying data, so it will still work even if your media's file system has been severely damaged or reformatted.

Eu o instalei usando repositórios padrão no openSUSE

instrução

    
por 02.05.2017 / 13:51