Respostas:
O Linux (como outras unidades) não fornece nativamente um recurso de desfazer. A filosofia é que, se se foi, se foi. Se fosse importante, deveria ter sido feito backup.
Existe um sistema de arquivos com fusível que mantém automaticamente cópias de versões antigas: copyfs , disponível em todas as boas distribuições. Obviamente, isso pode usar muitos recursos.
A melhor maneira de se proteger contra esses acidentes é usar um sistema de controle de versão (cvs, bazar, darcs, git, mercurial, subversão, ...). Leva um pouco de tempo para aprender, mas vale a pena demais a médio e longo prazo.
Infelizmente não.
-i
opção rm
ativada por padrão. Meus sistemas Unix não devem segurar minha mão.
Não, não há desfazer mágico em nenhum Unix. O Unix assume que você sabe o que está fazendo. Para suporte ao Desfazer, use um VCS (seu editor de texto provavelmente também o possui).
A maioria dos sistemas de arquivos não tem a capacidade de fazê-lo de forma transparente.
A máquina do tempo e a restauração do sistema no Mac e no Windows, respectivamente, são apenas sistemas de controle de backup / alteração.
Não há desfazer na linha de comando. No entanto, você pode executar comandos como rm -i
e mv -i
. Isso solicitará um "você tem certeza?" pergunta antes de executar o comando.
Também é possível adicionar um alias para um script de inicialização (por exemplo, ~/.bashrc
ou /etc/bash.bashrc
):
alias remove='rm -i'
alias move='mv -i'
Editar: pelas sugestões abaixo, removi meu conselho para alias os comandos padrão. Em vez disso, ele introduz novos comandos agora).
mv -i
solicita apenas quando substituir um arquivo (o que o torna útil e não desagradável). Na mesma linha alias cp='cp -i'
,.
A razão pela qual os sistemas Linux / Unix não têm uma exclusão excluída decorre da maneira como a maioria dos sistemas de arquivos armazena suas informações. As meta-informações do arquivo são todas armazenadas na frente do disco, com referências aos inodes no restante do disco. Normalmente, a maioria dos sistemas de arquivos aloca 10 blocos para um arquivo nessa meta-área. Os 7 primeiros referem-se aos 7 primeiros inodes. Os dias 8 e 9 vão para listas de inodes (blocos duplamente vinculados) e o 10º para uma lista de listas de listas (blocos vinculados tripply). Isso varia de sistema para sistema de arquivos (ext4, jfs, xfs etc.), mas essas listas de blocos geralmente podem endereçar tamanhos de arquivo de 2 GB a vários TB.
Porém, como todas essas informações são armazenadas na frente do disco, quando um arquivo é apagado, não há como referenciar inodes no disco para quais metadados a que eles pertencem. Por outro lado, o FAT32 e o NTFS realmente armazenam algumas informações de cabeçalho nos arquivos, facilitando a identificação de quais arquivos um conjunto de blocos deve pertencer (desde que esse espaço ainda não tenha sido recuperado por arquivos mais recentes). No trabalho do Linux, quando você exclui algo, quase sempre é a primeira coisa a ser substituída imediatamente por novos dados para obter eficiência.
Se você realmente deseja desfazer um recurso, use o controle de origem. O Subversion realmente funciona muito bem em uma máquina de usuário único. Eu o uso para controlar todos os meus arquivos pessoais no meu sistema doméstico. Parece exagero, até um desastre, um script desonesto ou um erro de digitação na linha de comando.
rm -r .
embora. ;)
rm -r project.git
. Felizmente, se você manter uma outra versão em um servidor remoto que é improvável que isso aconteça
rm -r .
. Realmente estúpido da minha parte.
Uma coisa que gosto de adicionar ao meu .bashrc é uma função de copiar e remover. Algo como:
cprm(){
cp -p $1 ~/deleted/$1
rm $1
}
Mas você precisa adquirir o hábito de digitar cprm e não rm.
Obviamente, você precisará manter-se no topo da área excluída se tiver espaço em disco limitado.
"$1"
.
O GitFS é um sistema de arquivos baseado em fusível, que calcula automaticamente diff
s entre versões e permite restaurar / navegar por elas.
Página da Web: https://www.presslabs.com/gitfs
Documentos: https://www.presslabs.com/gitfs/docs/usage/