systemadmin.es » Recuperar ficheros borrados pero aún abiertos por algun proceso

Recuperar ficheros borrados pero aún abiertos por algun proceso

Panico en el sistema de ficheros!

Panico en el sistema de ficheros!

A todos alguna vez nos ha entrado el panico cuando se llena el disco, haciendo un rm -fr * en la partición donde se guardan los logs para liberar espacio.

Como sabreis, si no se para el proceso que tiene los ficheros abiertos realmente no se borran de disco, por lo que lo siguiente es reiniciar el syslog para que los cierre y se libere el espacio que ocupaban. Si es antes de hacer esto que nos ha entrado el panico por la perdida de algun log importante, aún podemos recuperar estos ficheros.

Primero de todo deberiamos buscar el PID del proceso de syslog:

[root@shuVak ~]# ps -fea | grep syslog | grep -v grep
root      2787     1  0 Sep23 ?        00:00:28 syslogd -m 0

Sabiendo el PID podemos consultar en el /proc que descriptores de ficheros esta usando y a que corresponden mediante el comando file:

file /proc/7439/fd/*
/proc/2787/fd/0: broken symbolic link to `socket:[3997]'
/proc/2787/fd/2: symbolic link to `/var/log/messages'
/proc/2787/fd/3: symbolic link to `/var/log/secure'
/proc/2787/fd/4: symbolic link to `/var/log/maillog'
/proc/2787/fd/5: broken symbolic link to `/var/log/cron' (deleted)
/proc/2787/fd/6: symbolic link to `/var/log/spooler'
/proc/2787/fd/7: symbolic link to `/var/log/boot.log'

A continuación copiamos los datos:

cat /proc/7439/fd/4 > /var/log/cron

Finalmente ya podemos reiniciar el daemon para que cierre el descriptor viejo y coja el fichero nuevo.

Relacionados

Imprimir Imprimir

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>