LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

Este tutorial le ayudará a recuperar datos de datos borrados accidentalmente desde sistemas Linux. Este es un error muy grave para cualquier usuario/admin, que conlleva graves situaciones. Este script será una bendición tanto para novatos como para expertos en la gestión de datos. Estaré usando TestDisk para la recuperación de datos. Aquí he simplificado la tarea con la ayuda de un script.

1. Antecedentes

TestDisk es un potente software libre para la recuperación de datos. Suponga que tiene una unidad ext3/ext4 que eliminó/fulminó con comandos como rm -rf o Mayús+Supr, con la ayuda de TestDisk puede recuperar el archivo o datos.

TestDisk puede ser usado para

Solucionar problemas de la Tabla de Particiones

Recuperar archivos de FAT, exFAT, NTFS y particiones ext2 / ext3 / ext4

Además de estas funciones, TesdDisk tiene varias funciones para el mantenimiento / gestión de datos

2. Requisito

Estoy usando CentOS en el que voy instalar el TestDisk y poner en práctica la secuencia de comandos de recuperación de datos en una unidad perdida. Este script funciona bien con el CentOS / Fedora / Redhat. Incluso si sucede que alguno de los discos duros se borró, sólo tiene que conectar el disco duro con la máquina CentOS y ejecutar la secuencia de comandos para recuperar los datos.

Instale testdisk, si es posible:

# yum -y install testdisk

Si tiene Debian o Ubuntu o similares:

apt-get install testdisk

3. El Script.

#!/bin/bash
#######################################################################################################
#######################################################################################################
#######################################################################################################
######                                                                                          #######
######                                                                                          #######
######                 Este script le ayudará a recuperar los ficheros borrados                 #######
######                     de forma accidental y discos estropeados.                            #######
######                                     Version-2                                            #######
######                          Script created by (Srijan Kishore)                              #######
######                                                                                          #######
######                                                                                          #######
#######################################################################################################                                                                                       
#######################################################################################################
#######################################################################################################

# User Check

if [ "$USER" = 'root' ]
    then

whiptail --title "Comprobación de usuario" --msgbox "El usuario es root, puede ejecutar el script satisfactoriamente." 8 78
             
        echo "El usuario es root, puede ejecutar el script satisfactoriamente"
    else
whiptail --title "Comprobación de usuario" --msgbox "El usuario no es root, por favor ejecute el script con privilegios de root." 8 78

        
        echo "El usuario no es root, por favor ejecute el script con privilegios de root."
        exit 1
fi

# Check your operating system

cat /etc/redhat-release >> /dev/null 
if [ "$?" = 0 ]
    then

whiptail --title "Su OS" --msgbox "Está usando CentOS/RedHat/Fedora" 8 78
echo "Está usando CentOS/RedHat/Fedora"

    else

whiptail --title "Su OS" --msgbox "NO Está usando CentOS/RedHat/Fedora. Puede descargarse TestDisk desde http://www.cgsecurity.org/wiki/TestDisk_Download" 8 78

    echo "NO Está usando CentOS/RedHat/Fedora. Puede descargarse TestDisk desde http://www.cgsecurity.org/wiki/TestDisk_Download"
    exit 1        
fi

#adding repo


ver=`cat /etc/redhat-release | cut -d " " -f3 | cut -d "." -f1`
ls -l /etc/yum.repos.d/rpmforge*

if [ "$?" != 0 ]
    
    then
    whiptail --title "Repositorio requerido" --msgbox "Necesita instalar el repositorio rpmforge y/o rpmfusion para instalar testdisk" 8 78
        if [[ `uname -i` = 'i386' && $ver = 6 ]]
            then 
            echo "Está ejecutando i386 con versión 6"
            yum install -y http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
        fi

        if [[ `uname -i` = 'x86_64' && $ver = 6 ]]
            then 
            echo "Está ejecutando i386 con versión 6"
            yum install -y http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
        fi

        if [[ `uname -i` = 'i386' && $ver = 5 ]]
            then 
            echo "Está ejecutando i386 con versión 5"
            yum install -y http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.i386.rpm
        fi

        if [[ `uname -i` = 'x86_64' && $ver = 5 ]]
            then 
            echo "Está ejecutando x86_64 con versión 5"
            yum install -y http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
        fi

        if [[ `uname -i` = 'x86_64' && $ver = 4 ]]
            then 
            echo "Está ejecutando x86_64 con versión 4"
            yum install -y http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el4.rf.i386.rpm
        fi

        if [[ `uname -i` = 'x86_64' && $ver = 4 ]]
            then 
            echo "Está ejecutando x86_64 con versión 4"
            yum install -y http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el4.rf.x86_64.rpm
        fi
else
whiptail --title "Requerimiento del repositorio." --msgbox "Ya tiene repositorios configurados con TestDisk" 8 78
echo "Ya tiene repositorios configurados con TestDisk"
fi


# TestDisk installation
testdisk --version >> /dev/null
if [ "$?" = 0 ]
    then
    whiptail --title "Info" --msgbox "Testdisk ya instalado" 8 78
    echo "Testdisk ya instalado"
    else
    whiptail --title "Info" --msgbox "TestDisk no instalado, instalando TestDisk" 8 78
        echo "TestDisk no instalado, instalando TestDisk"

    yum install -y testdisk
fi

#Recovery part of deleted files

ls -l /root/result/lostfiles
if [ $? != 0 ]
    then
    mkdir -p /root/result/lostfiles
    whiptail --title "Recuperación de datos" --msgbox "Usted está procediendo a la recuperación de los datos de la unidad perdida. Por favor seleccione la unidad afectada para obtener los datos recuperados" 8 78
    photorec /d /root/result/lostfiles

    else        
    whiptail --title "Existen carpetas" --msgbox "Ya existe una carpeta existente a saber /root/result/lostfiles, se le aconsejó renombrar/eliminar la carpeta para permitir el proceso de recuperación de datos" 8 78        
exit 2
fi

#File filtering
 
user=`ps aux | grep gnome-session | grep -v grep | head -1 | cut -d " " -f1`
mkdir "/home/recovered_output"
mkdir "/home/recovered_output/Debians"
mkdir "/home/recovered_output/rpms"
mkdir "/home/recovered_output/conf_files"
mkdir "/home/recovered_output/exe"
mkdir "/home/recovered_output/binaries"
mkdir "/home/recovered_output/Docs"
mkdir "/home/recovered_output/Pdfs"
mkdir "/home/recovered_output/Mbox"
mkdir "/home/recovered_output/Images"
mkdir "/home/recovered_output/Videos"
mkdir "/home/recovered_output/Sound"
mkdir "/home/recovered_output/ISO"
mkdir "/home/recovered_output/Excel"
mkdir "/home/recovered_output/Presentation"
mkdir "/home/recovered_output/Web_Files"
mkdir "/home/recovered_output/Archives"
mkdir "/home/recovered_output/Others"

#Sorting the Recovered data

find /root/result/ -name "*.doc"    -type f  -exec mv {} "/home/recovered_output/Docs/" \;
find /root/result/ -name "*.docx"   -type f  -exec mv {} "/home/recovered_output/Docs/" \;
find /root/result/ -name "*.odt"    -type f  -exec mv {} "/home/recovered_output/Docs/" \;
find /root/result/ -name "*.pdf"    -type f  -exec mv {} "/home/recovered_output/Pdfs/" \;
find /root/result/ -name "*.mbox"   -type f  -exec mv {} "/home/recovered_output/Mbox/"  \;
find /root/result/ -name "*.png"    -type f  -exec mv {} "/home/recovered_output/Images/" \;
find /root/result/ -name "*.jpg"    -type f  -exec mv {} "/home/recovered_output/Images/" \;
find /root/result/ -name "*.jpeg"   -type f  -exec mv {} "/home/recovered_output/Images/" \;
find /root/result/ -name "*.gif"    -type f  -exec mv {} "/home/recovered_output/Images/" \;
find /root/result/ -name "*.avi"    -type f  -exec mv {} "/home/recovered_output/Videos/" \;
find /root/result/ -name "*.mpeg"   -type f  -exec mv {} "/home/recovered_output/Videos/" \;
find /root/result/ -name "*.mp4"    -type f  -exec mv {} "/home/recovered_output/Videos/" \;
find /root/result/ -name "*.mkv"    -type f  -exec mv {} "/home/recovered_output/Videos/" \;
find /root/result/ -name "*.webm"   -type f  -exec mv {} "/home/recovered_output/Videos/" \;
find /root/result/ -name "*.wmv"    -type f  -exec mv {} "/home/recovered_output/Videos/" \;
find /root/result/ -name "*.flv"    -type f  -exec mv {} "/home/recovered_output/Videos/" \;
find /root/result/ -name "*.mp3"    -type f  -exec mv {} "/home/recovered_output/Sound/" \;
find /root/result/ -name "*.wav"    -type f  -exec mv {} "/home/recovered_output/Sound/" \;
find /root/result/ -name "*.deb"    -type f  -exec mv {} "/home/recovered_output/Debians/" \;
find /root/result/ -name "*.bin"    -type f  -exec mv {} "/home/recovered_output/binaries/" \;
find /root/result/ -name "*.exe"    -type f  -exec mv {} "/home/recovered_output/exe/" \;
find /root/result/ -name "*.rpm"    -type f  -exec mv {} "/home/recovered_output/rpms/" \;
find /root/result/ -name "*.conf"   -type f  -exec mv {} "/home/recovered_output/conf_files" \;
find /root/result/ -name "*.iso"    -type f  -exec mv {} "/home/recovered_output/ISO/" \;
find /root/result/ -name "*.xls"    -type f  -exec mv {} "/home/recovered_output/Excel/" \;
find /root/result/ -name "*.xlsx"   -type f  -exec mv {} "/home/recovered_output/Excel/" \;
find /root/result/ -name "*.csv"    -type f  -exec mv {} "/home/recovered_output/Excel/" \;
find /root/result/ -name "*.ods"    -type f  -exec mv {} "/home/recovered_output/Excel/" \;
find /root/result/ -name "*.ppt"    -type f  -exec mv {} "/home/recovered_output/Presentation/" \;
find /root/result/ -name "*.pptx"   -type f  -exec mv {} "/home/recovered_output/Presentation/" \;
find /root/result/ -name "*.odp"    -type f  -exec mv {} "/home/recovered_output/Presentation/" \;
find /root/result/ -name "*.html"   -type f  -exec mv {} "/home/recovered_output/Web_Files/" \;
find /root/result/ -name "*.htm"    -type f  -exec mv {} "/home/recovered_output/Web_Files/" \;
find /root/result/ -name "*.jsp"    -type f  -exec mv {} "/home/recovered_output/Web_Files/" \;
find /root/result/ -name "*.xml"    -type f  -exec mv {} "/home/recovered_output/Web_Files/" \;
find /root/result/ -name "*.css"    -type f  -exec mv {} "/home/recovered_output/Web_Files/" \;
find /root/result/ -name "*.js"     -type f  -exec mv {} "/home/recovered_output/Web_Files/" \;
find /root/result/ -name "*.zip"    -type f  -exec mv {} "/home/recovered_output/Archives/" \;
find /root/result/ -name "*.tar"    -type f  -exec mv {} "/home/recovered_output/Archives/" \;
find /root/result/ -name "*.rar"    -type f  -exec mv {} "/home/recovered_output/Archives/" \;
find /root/result/ -name "*.gzip"   -type f  -exec mv {} "/home/recovered_output/Archives/" \;
find /root/result/ -name "*.tar.gz" -type f  -exec mv {} "/home/recovered_output/Archives/" \;
find /root/result/ -name "*.7z"     -type f  -exec mv {} "/home/recovered_output/Archives/" \;
find /root/result/ -name "*.bz"     -type f  -exec mv {} "/home/recovered_output/Archives/" \;
find /root/result/ -name "*.bz2"    -type f  -exec mv {} "/home/recovered_output/Archives" \;
find /root/result/ -name "*.*"      -type f  -exec mv {} "/home/recovered_output/Others/" \;

#Finalization
whiptail --title "Congratulaciones / Enhorabuena" --msgbox "Ha recuperado con éxito sus datos en la carpeta /home/recovered_output :)" 8 78
echo "Ha recuperado con éxito sus datos en la carpeta /home/recovered_output :)"
exit 0

4. de ejecución de secuencias

Basta con copiar y pegar el script de arriba en el archivo "script.sh" y dar los permisos de ejecución al script.

chmod +x script.sh

Nota: Por favor, ejecute la secuencia de comandos como root mediante el comando

su -                          #### Pon tu contraseña de root ####

Ejecute el script y se le guiará más.

sh script.sh

5. Finalización

En primer lugar el script confirma que si el usuario que ejecuta la secuencia de comandos es root, entonces se comprueba la instalación de la herramienta TestDisk que incluye (si no está) además automáticamente un repositorio. Se le redirigirá a la página de selección de unidad para la recuperación de datos.

Se comprobará primeramente si el usuario es root.

Si el usuario es root, podrá ejecutar el script satisfactoriamente.

Comprobará la versión del Sistema Operativo

Indicará que necesita instalar el repositorio rpmforge, para instalar testdisk

Como ya tenemos instalado testdisk, nos aparece el texto... (Si no, se encarga de instalarlo automáticamente)

Se procederá a la recuperación.

 Espero, que le sea de gran utilidad.

Si lo que quieres, es evitar recuperaciones, mirate este truco:

Script para Rellenar con ceros

Pin It

Comentarios  

0 # jaraneda 19-11-2014 21:04
muchas gracias espero no tener que usarlo nunca pero por si las moscas lo trate de copiar en VIM o notepad++ pero me queda desordenado, lagun tip para un copy-paste mas legible.
Responder | Responder con una citación | Citar
0 # Javier Orovengua 19-11-2014 22:37
He realizado cambios en el plugin que controlaba el copy-paste, ahora debería permitir hacerlo de formá más legible y suprime el "See more at"
Responder | Responder con una citación | Citar
0 # jaraneda 20-11-2014 13:51
muchas gracias
Responder | Responder con una citación | Citar

Escribir un comentario


Código de seguridad
Refescar