Para tratar de paliar el borrado accidental con el comando rm -rf se puede habilitar la papelera trash-cli
El proceso de instalación es el siguiente:
|
$ sudo apt-get install python-setuptools #Debian/Ubuntu systems $ sudo yum install python-setuptools #RHEL/CentOS systems $ sudo easy_install trash-cli |
Para borrar un archivo
Ver lista de borrados
|
$ trash-list | grep file 2017-05-05 10:30:48 /home/morris/file1 2017-05-10 13:40:41 /home/morris/file2 2017-05-12 22:30:49 /home/morris/file3 |
Recuperar un archivo
|
$ trash-restore 0 2017-05-05 10:30:48 /home/morris/file1 1 2017-05-10 13:40:41 /home/morris/file2 2 2017-05-12 22:30:49 /home/morris/file3 3 2017-05-12 22:50:48 /home/morris/test |
La información se almacena en el home de cada usuario, y hay que tener cuidado que no crezca en tamaño.
|
$ ls -al /home/Usuario/.local/share/Trash/files/ $ ls -al ~/.local/share/Trash/files/ |
El siguiente proceso sería generar un fichero que emulase al comando rm, para ello vamos a generar este ejecutable.:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
$ vim /usr/local/bin/trash-rm Y añadimos este texto: #!/bin/bash # command name: trash-rm shopt -s extglob recursive=1 declare -a cmd ((i = 0)) do case "$f" in (-*([fiIv])r*([fiIv])|-*([fiIv])R*([fiIv])) tmp="${f//[rR]/}" if [ -n "$tmp" ] then #echo "\$tmp == $tmp" cmd[$i]="$tmp" ((i++)) fi recursive=0 ;; (--recursive) recursive=0 ;; (*) if [ $recursive != 0 -a -d "$f" ] then echo "skipping directory: $f" continue else cmd[$i]="$f" ((i++)) fi ;; esac done /usr/bin/trash "${cmd[@]}" |
|
$ chmod +x /usr/local/bin/trash-rm $ alias rm="/usr/local/bin/trash-rm" |
Como nota indicar que aunque el trash-list nos mostrará todos los ficheros que podemos recuperar, para poder realizar la recuperación tendremos que irnos al filesystem/partición donde se ubiquen y hacer el trash-restore.
Si lo ejecutamos desde otra ubicación no lo encontrará. Eso es porque el programa genera un .Trash en cada partición.
Si queremos eliminar por completo la posibilidad de utilizar el rm, podemos renombrar el /bin/rm y crear un enlace blando a /usr/local/bin/trash-rm, pero hay que tener que cuidado si algún programa utiliza las excepciones y control de errores en rm.