09 octubre 2008

Eliminación de ficheros recuperable

Todo usuario de Linux ha eliminado alguna vez algún fichero con rm que no quería eliminar, para luego darse cuenta de que no puede recuperarlo. Algunos de ellos han aprendido con la experiencia (tal vez no a la primera, pero a base de repetir se acaba quedando grabado) y se han acostumbrado a ello, hay otros que desearían que exista esa opción. Este post es para estos últimos :-)

Solución
  1. Abre el script the inicio (en el ejemplo para la shell bash) con tu editor preferido (vi es mi favorito para cosas tan rápidas):
  2. vi ~/.bashrc
  3. Añade el siguiente alias al fichero (junto a los otros alias que probablemente contenga ya el script):
  4. alias del 'mv -i \!* ~/.Trash'
    Perdon, este alias es para csh, no se como se haría para bash :-S
  5. Guarda el fichero.
¡Y listo! Ya puedes recuperar todos aquellos ficheros que borres con el comando del, el comando rm seguirá funcionando como siempre (irrecuperable.

Explicación

Nunca se debería crear un alias de rm por las siguientes razones:
  • se puede dañar scripts/programas que dependen de dicho comando
  • probablemente usarías el comando rm en otras máquinas que no tienen el alias sin darte cuenta de que no podrás recuperar los ficheros
  • aunque los argumentos de rm y mv se parecen mucho, ¡la man page correspondiente al alias de rm sería la man page correspondiente a mv y no la correspondiente a rm!
La opción -i usada en el alias propuesto hace que no se sobreescriban ficheros existentes en la papelera con el mismo nombre sin pedir confirmación antes.

No hay comentarios: