Recuperar archivos borrados desde consola.

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • siggy_stardust
    spiders from mars
    • 29-08-2006
    • 4373

    #1

    Recuperar archivos borrados desde consola.

    De linux-es:

    ¿Alguna vez habeis borrado un fichero por equivocacion desde consola, cuando estabais trabajando con el? Supongo que habeis echado mil maldiciones por la equivocacion y el tiempo perdido cuando esto os ha pasado.
    En este articulo vamos a hablar de la utilidad 'lsof'. Con este programa, la informacion en /proc y un poco de suerte, probablemente podamos recuperar el fichero que por arte de magia desaparecio de vuestro sistema cuando lo borrasteis accidentalmente. La 'poca de suerte' de la que hablamos es que el fichero que habeis borrado estuviese siendo accedido por un programa en el momento de realizar la operacion de borrado. A continuacion vamos a ver un ejemplo de como podemos realizar esta recuperacion.
    Primero vamos a ver un poco como podemos acceder a la informacion o estatus de un fichero. Para esto podemos utilizar el programa de sistema stat. Veamos como funciona:
    Primero creamos un fichero de texto:
    user@test# echo "ESTO ES UN FICHERO DE TEXTO DE PRUEBAS" > fichero_pruebas.txt
    A continuacion podemos usar stat para obtener la informacion de este fichero:
    user@test# stat fichero_pruebas.txt
    File: `fichero_pruebas.txt'
    Size: 39 Blocks: 8 IO Block: 4096 regular file
    Device: 301h/769d Inode: 512495 Links: 1
    Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
    Access: 2008-02-04 22:28:57.000000000 +0100
    Modify: 2008-02-04 22:28:57.000000000 +0100
    Change: 2008-02-04 22:28:57.000000000 +0100
    Alguna de esta informacion tambien la podriamos haber obtenido usando el comando ls:
    user@test# ls -li fichero_pruebas.txt
    512495 -rw-r--r-- 1 root root 39 2008-02-04 22:28 fichero_pruebas.txt
    De toda esta informacion, la que nos interesa en este articulo es la denominada Inode. Segun Wikipedia, un inodo (inode en ingles) se puede definir como:
    "... una estructura de datos propia de los sistemas de archivos tradicionalmente empleados en los sistemas operativos tipo UNIX como es el caso de Linux. Un inodo contiene las características (permisos, fechas, ubicación, pero NO el nombre) de un archivo regular, directorio, o cualquier otro objeto que pueda contener el sistema de ficheros.
    El término "inodo" refiere generalmente a inodos en discos (dispositivos en modo bloque) que almacenan archivos regulares, directorios, y enlaces simbólicos. El concepto es particularmente importante para la recuperación de los sistemas de archivos dañados.
    Cada inodo queda identificado por un número entero, único dentro del sistema de ficheros, y los directorios recogen una lista de parejas formadas por un número de inodo y nombre identificativo que permite acceder al archivo en cuestión: cada archivo tiene un único inodo, pero puede tener más de un nombre en distintos o incluso en el mismo directorio para facilitar su localización."
    En nuestro caso el inodo de nuestro fichero es 512495, este es el identificador de nuestro fichero en el sistema. Cuando borramos un fichero con el comando rm, lo que hacemos es borrar la referencia al inodo en cuestion, durante un tiempo dicho inodo seguira existiendo en nuestro sistema aunque no podamos verlo y parezca que el fichero borrado ha desaparecido de nuestro sistema.
    Si algun programa esta accediendo el fichero que hemos borrado, estamos de suerte. El programa en cuestion tendra una referencia al inode del fichero borrado y siempre que no cerremos este programa podremos recuperar el contenido de dicho fichero. (Un caso practico que a muchos nos a pasado alguna vez es el borrar el fichero log de algun servicio del sistema (apache, postgresql, mysql. etc) mientras que el servicio esta funcionando)
    A continuacion presentamos una session completa desde que borramos un fichero hasta que lo recuperamos:
    Abrimos nuestro fichero ejemplo con less (por ejemplo)
    user@test# less fichero_pruebas.txt

    ESTO ES UN FICHERO DE TEXTO DE PRUEBAS
    fichero_pruebas.txt (END)
    Pulsamos Ctrl+z para suspender el programa less sin pararlo (el programa seguira abierto, accediendo nuestro fichero, pero suspendido)
    user@test# less fichero_pruebas.txt

    [1]+ Stopped less fichero_pruebas.txt
    Comprobamos que nuestro fichero sigue intacto:
    user@test# ls -li fichero_pruebas.txt
    512495 -rw-r--r-- 1 root root 39 2008-02-04 22:28 fichero_pruebas.txt
    Lo borramos ... accidentalmente ;-)
    user@test# rm ficheros_de prueba.txt
    Comprobamos que no existe en nuestro directorio
    user@test# ls -li fichero_pruebas.txt
    ls: fichero_pruebas.txt: No such file or directory
    Como hemos comentado mas arriba, si tenemos un programa accediendo el fichero estamos de suerte. Utilizamos lsof para ver si algun programa esta accediendo el fichero que hemos borrado:
    user@test# lsof |grep fichero_pruebas.txt
    less 28410 user 4r REG 3,1 39 512495 /home/user/fichero_pruebas.txt (deleted)
    No deberia de ser una sorpresa que nuestro programa less este accediendo nuestro fichero borrado. Las columnas que nos interesan de esta linea son la primera (PID del programa accediendo el fichero, 28410), y la cuarta, el 'file descriptor' (4r) con la referencia al inodo de nuestro fichero (512495).
    Con esta informacion nos vamos al sistema de ficheros virtual /proc con informacion de nuestro sistema linux.
    user@test# ls -l /proc/28410/fd/4
    lr-x------ 1 user user 64 2008-02-04 22:38 /proc/28410/fd/4 -> /home/user/fichero_pruebas.txt (deleted)
    Como era de esperar, una referencia al fichero borrado. Lo unico que tenemos que hacer ahora es copiar los datos a los que /proc/28410/fd/4 esta haciendo referencia. Para esto podemos utilizar simplemente el comando cp
    user@test# cp /proc/28410/fd/4 fichero_pruebas.txt.restaurado
    Ahora no importa que nuestro programa less termine de ejecutarse, porque nuestro fichero borrado ya esta recuperado.
    user@test# cat fichero_pruebas.txt.restaurado
    ESTO ES UN FICHERO DE TEXTO DE PRUEBAS
    En este articulo hay que tener un poco de suerte para no perder nuestro fichero, pero en futuros articulos veremos otras tecnicas a usar cuando la suerte no esta de nuestro lado. Esto es todo por hoy, que lo disfruteis.

    Salve!

    Rei
    綾波 レイ


    egel-chat @ irc.ubuntu.com /join #egel-forum.
    Kei Kurono: en mi corazon siempre seras inyeccion de ricota
  • lukas_utc
    Pichón de Godzilla
    • 02-11-2006
    • 258

    #2
    genial
    Hvij licht grav oß la enh grok vas vil regn im burzum.

    Comentario

    • judío ginger daywalker petiso
      Pelotudo
      • 14-03-2005
      • 16758

      #3
      habria que ver dentro de que contexto de archivos tenes chances altas de que esten en uso para el momento del accidente...

      no se cuan practico pueda llegar a ser

      K

      Comentario

      • Godlike
        Improved Inválido
        • 14-04-2003
        • 8949

        #4
        Para logs sirven. Pero si usás logrotate fuiste :P.

        Igual estaría piola a ver que soluciones a lo GetDataBack hay para ext3/xfs.
         
        Kabronero (1:56) :
        Draco_arg es como Liu Kang pero con los poderes de Raiden
        HE DICHO
        Dr@co_arg (1:57) :
        a mi firma!
        ==========
        Nesta (2:14 AM) :
        SEÑOR SE LE VEN LAS PELOTAS
        Nesta (2:15 AM) :
        SE LE VEN LAS PE-LO-TAS
        Nesta (2:15 AM) :
        es sordo?

        Nesta (2:15 AM) :
        Q SE TAPE
        ==========
        -- Silvy -- says:
        SABE' LA PORNO QEU PODEMO' VENDE'

        Comentario

        • siggy_stardust
          spiders from mars
          • 29-08-2006
          • 4373

          #5
          Originalmente publicado por Godlike
          Para logs sirven. Pero si usás logrotate fuiste :P.

          Igual estaría piola a ver que soluciones a lo GetDataBack hay para ext3/xfs.
          investigare al respecto y volvere con noticias...
          mas tarde por supuesto.
          綾波 レイ


          egel-chat @ irc.ubuntu.com /join #egel-forum.
          Kei Kurono: en mi corazon siempre seras inyeccion de ricota

          Comentario

          • [DAS]
            DIOS EGEL
            • 09-08-2003
            • 11751

            #6
            Hijo de puta, me querés dejar ciego.

            Pero no hay un programa para recuperar archivos borrados?. No es más simple?.

            Offtopic: Ayer después de un upgrade se me cagó el mbr, no sé que mierda toqué y borré las 5 particiones =/

            Recuperarlas en 15 minutos fue una gloria

            Lo malo es que se me borró el grub ¬¬
            AY COCO PUTO!

            Comentario

            • lukas_utc
              Pichón de Godzilla
              • 02-11-2006
              • 258

              #7
              Y PONELE OTRO GRUB n

              o LILO

              ok, no
              Hvij licht grav oß la enh grok vas vil regn im burzum.

              Comentario

              • siggy_stardust
                spiders from mars
                • 29-08-2006
                • 4373

                #8
                Lamento decir que:

                "Q: How can I recover (undelete) deleted files from my ext3 partition?
                Actually, you can't! This is what one of the developers, Andreas Dilger, said about it:

                In order to ensure that ext3 can safely resume an unlink after a crash, it actually zeros out the block pointers in the inode, whereas
                ext2 just marks these blocks as unused in the block bitmaps and marks the inode as "deleted" and leaves the block pointers alone.

                Your only hope is to "grep" for parts of your files that have been deleted and hope for the best."


                esto sale del FAQ de ext3...

                Encontre algunos productos comerciales que dicen recuperar archivos borrados de ext3 por U$S50 or so... pero si uno de los desarrolladores de ext3 dice que no se puede no pienso gastarme 50 verdes para ver si tiene razon...
                綾波 レイ


                egel-chat @ irc.ubuntu.com /join #egel-forum.
                Kei Kurono: en mi corazon siempre seras inyeccion de ricota

                Comentario

                • judío ginger daywalker petiso
                  Pelotudo
                  • 14-03-2005
                  • 16758

                  #9
                  Originalmente publicado por ayanami_rei
                  Your only hope is to "grep" for parts of your files that have been deleted and hope for the best.
                  dios, me imagino la cara de desesperacion cuando ya no te queda otra que grepear /dev/sda1 en busqueda de tus gloriosas bytestrings

                  K

                  Comentario

                  • siggy_stardust
                    spiders from mars
                    • 29-08-2006
                    • 4373

                    #10
                    Originalmente publicado por Kremar
                    dios, me imagino la cara de desesperacion cuando ya no te queda otra que grepear /dev/sda1 en busqueda de tus gloriosas bytestrings

                    K
                    el FAQ termina con una reflexion tipo una buena politica de backup es tu unica salvacion...
                    suena re amargo, pero tiene razon.
                    綾波 レイ


                    egel-chat @ irc.ubuntu.com /join #egel-forum.
                    Kei Kurono: en mi corazon siempre seras inyeccion de ricota

                    Comentario

                    • Godlike
                      Improved Inválido
                      • 14-04-2003
                      • 8949

                      #11
                      Es que es así jaujuaua. De todas formas tengo entendido que ext3 es bastante generoso a la hora de crashear, a diferencia de XFS que en donde crasheó, perdiste.

                      Igualmente mataría una tabla comparativa sobre cada filesystem a ver cual es el más reliable. Porque la verdad que en velocidad XFS le rompe el orto a lo que venga.
                       
                      Kabronero (1:56) :
                      Draco_arg es como Liu Kang pero con los poderes de Raiden
                      HE DICHO
                      Dr@co_arg (1:57) :
                      a mi firma!
                      ==========
                      Nesta (2:14 AM) :
                      SEÑOR SE LE VEN LAS PELOTAS
                      Nesta (2:15 AM) :
                      SE LE VEN LAS PE-LO-TAS
                      Nesta (2:15 AM) :
                      es sordo?

                      Nesta (2:15 AM) :
                      Q SE TAPE
                      ==========
                      -- Silvy -- says:
                      SABE' LA PORNO QEU PODEMO' VENDE'

                      Comentario

                      • siggy_stardust
                        spiders from mars
                        • 29-08-2006
                        • 4373

                        #12
                        Originalmente publicado por Godlike
                        Es que es así jaujuaua. De todas formas tengo entendido que ext3 es bastante generoso a la hora de crashear, a diferencia de XFS que en donde crasheó, perdiste.

                        Igualmente mataría una tabla comparativa sobre cada filesystem a ver cual es el más reliable. Porque la verdad que en velocidad XFS le rompe el orto a lo que venga.
                        yo vi unas comparativas hace poco y reiserfs era el mas rapido del oeste po una pendejesima... igual ext3 a morir. antes usaba reiser y una vuelta crasheo y perdi 110GB de musica.

                        deci que el flaco esta preso...
                        綾波 レイ


                        egel-chat @ irc.ubuntu.com /join #egel-forum.
                        Kei Kurono: en mi corazon siempre seras inyeccion de ricota

                        Comentario

                        • lukas_utc
                          Pichón de Godzilla
                          • 02-11-2006
                          • 258

                          #13
                          jUAj reiser es genial hasta que crashea todo
                          Hvij licht grav oß la enh grok vas vil regn im burzum.

                          Comentario

                          • Godlike
                            Improved Inválido
                            • 14-04-2003
                            • 8949

                            #14
                            Yo tenía entendido que reiser era una porquería.

                            En el servidor tengo una partición en XFS y es increíble la diferencia de velocidad con ext3. Aunque la verdad que el chequeo que te hace ext3 cada vez que se le canta es un parto. Eso es lo gracioso que tiene XFS. Cuando formateás y cuando chequeás una unidad, no importa que tan grande sea, siempre lleva segundos hacerlo.
                             
                            Kabronero (1:56) :
                            Draco_arg es como Liu Kang pero con los poderes de Raiden
                            HE DICHO
                            Dr@co_arg (1:57) :
                            a mi firma!
                            ==========
                            Nesta (2:14 AM) :
                            SEÑOR SE LE VEN LAS PELOTAS
                            Nesta (2:15 AM) :
                            SE LE VEN LAS PE-LO-TAS
                            Nesta (2:15 AM) :
                            es sordo?

                            Nesta (2:15 AM) :
                            Q SE TAPE
                            ==========
                            -- Silvy -- says:
                            SABE' LA PORNO QEU PODEMO' VENDE'

                            Comentario

                            • judío ginger daywalker petiso
                              Pelotudo
                              • 14-03-2005
                              • 16758

                              #15
                              desde que instale el magic sysreq hack en mis kernels, nunca mas crasheo el FS

                              K

                              Comentario

                              Trabajando...