Existe um comando “desfazer” na linha de comando do Unix?

7

Tenho a sensação de que vou precisar dele um dia, como se tivesse acabado de deletar algo que não deveria ter, ou renomeado algo e não me lembrar de como ele deveria ser chamado, etc.

    
por Kirt 03.10.2010 / 04:51

3 respostas

8

Negativo. Não existe um botão mágico de desfazer no Linux.

    
por 03.10.2010 / 04:56
6

Não.

O Unix não fornece um recurso de desfazer nativamente. A filosofia é que, se tiver desaparecido, desaparecerá. Se fosse importante, deveria ter sido copiado para backup .

Em vez de remover um arquivo, você pode movê-lo para um diretório temporário de "lixeira". Alguns ambientes de área de trabalho fazem com que o comando “delete” mova o arquivo para a lixeira. Mas cuidado, pois apenas alguns aplicativos irão usá-lo; outros apenas removerão o arquivo.

Muitos comandos podem ser revertidos, por exemplo, uma movimentação de arquivos pode ser desfeita movendo o arquivo de volta. Comandos que apagam ou sobrescrevem um arquivo não podem ser facilmente desfeitos, se de algum modo; alguns deles podem se tornar mais robustos contra perda acidental de dados por meio de configurações de shell. Em particular:

  • Na linha de comando, cp e mv sobrescreverão qualquer arquivo de destino existente, mas você poderá fazê-lo:

    alias cp='cp -i'
    alias mv='mv -i'
    

    Eu recomendo esses dois aliases porque sem eles, cp e mv fazem dois trabalhos: copiar / mover e excluir. Não ter arquivos cp e mv delete está mais de acordo com a filosofia unix (um comando faz um trabalho) e menos propenso a erros. (Isto é completamente diferente de rm -i , que pede confirmação antes de fazer o seu trabalho - tal alerta sistemático tende a desencadear uma resposta automática e, assim, torna-se um aborrecimento inútil.)

  • Você pode fazer com que o operador de redirecionamento > aceite apenas criar arquivos, para que você tenha que escrever >|foo para permitir a substituição de um arquivo existente foo .

    set -o noclobber
    

Existe um sistema de arquivos FUSE que mantém automaticamente cópias de versões antigas: copyfs , disponível para a maioria dos unices (* BSD, Linux, OS X, Solaris). Claro, isso pode usar muitos recursos.

Se você moveu um arquivo para um diretório diferente e lembra (parte de) seu nome, mas não sua localização, pode usar o comando locate para encontrá-lo.

A melhor maneira de proteger contra tais acidentes é usar um sistema controle de versões (cvs, bazaar, darcs, git, mercurial, subversion, ...). Demora um pouco para aprender, mas vale a pena a médio e longo prazo.

    
por 03.10.2010 / 23:20
0

Não há nenhuma opção de "desfazer", apenas se você usou o recurso Lixeira.

Para recuperar arquivos removidos, isso realmente depende do sistema de arquivos que você possui.

Existe:

Ele suporta a maioria dos principais sistemas de arquivos.

HFS Plus

Para o HFS Plus (OS X), existem algumas soluções comerciais, como:

Leia mais: Recuperar arquivos da partição HFS + formatada

Para uma lista completa, verifique:

Para evitar situações semelhantes, faça os backups com mais frequência, use o controle de versão ou leia como Transforme rm em lixo .

    
por 24.10.2014 / 23:32