Para evitar um erro rm -rf
, não digite rm -rf
.
Se você precisar excluir uma árvore de diretórios, recomendo o seguinte fluxo de trabalho:
- Se necessário, mude para o pai do diretório que você deseja excluir.
-
mv directory-to-delete DELETE
- Explore
DELETE
e verifique se é realmente o que você queria excluir -
rm -rf DELETE
Nunca chame rm -rf
com um argumento diferente de DELETE
. Fazer a exclusão em vários estágios dá a você a oportunidade de verificar se não está excluindo a coisa errada, seja devido a um erro de digitação (como em rm -rf /foo /bar
em vez de rm -rf /foo/bar
) ou devido a um braino (oops, não, eu significou excluir foo.old
e manter foo.new
).
Se o seu problema é que você não pode confiar nos outros para não digitar rm -rf
, considere remover seus privilégios de administrador. Há muito mais que pode dar errado do que rm
.
Sempre faça backups .
Verifique periodicamente se seus backups estão funcionando e atualizados.
Mantenha tudo o que não pode ser baixado facilmente de algum lugar sob controle de versão.
Com um sistema unix básico, se você realmente deseja tornar alguns diretórios undeletable por rm
, substitua (ou melhor sombra) rm
por um script personalizado que rejeita certos argumentos. Ou por hg rm
.
Algumas variantes unix oferecem mais possibilidades.
- No OSX, você pode definir uma lista de controle de acesso em um diretório que impeça a exclusão dos arquivos e subdiretórios dentro dela. sem impedir a criação de novas entradas ou modificação de entradas existentes:
chmod +a 'group:everyone deny delete_child' somedir
(isso não impede a exclusão de arquivos em subdiretórios: se você quiser, configure a ACL no subdiretório também). - No Linux, você pode definir regras no SELinux, no AppArmor ou em outras estruturas de segurança que proíbem
rm
de modificar determinados diretórios.