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
DELETEe 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
rmde modificar determinados diretórios.