LinuxParty
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
![](/images/banners/linux-party-png-para-articles.png)
-
Documentación
- Explora la Historia Hispánica con este Mapa Interactivo de la Real Academia de Historia
- ¿CÓMO SE INVENTÓ LA RUEDA?
- ¿Estamos en el 'Antropoceno', la era humana? Los científicos dicen: no
- Quemadores de Hidrógeno Verde para una Producción de Asfalto Sostenible
- Jericó: Un Viaje a Través de los Milenios en la Ciudad más Antigua del Mundo
- La Generación Z recurre a los libros y bibliotecas físicos
- El Trágico Declive de la Biblioteca de Alejandría: Una Epopeya Perdida en Llamas
- Los Neandertales fueron los primeros homínidos en controlar el fuego, y no los sapiens, sugiere un estudio
- Un grupo de Hóminidos Eurosiáticos podrían poner en duda todo lo que sebe sobre el del Homo Sapiens, hasta la fecha
- Descubre la Iglesia de San Antonio de los Alemanes: Un Tesoro Arquitectónico en el Corazón de Madrid
- La Asombrosa Reconstrucción de una Mujer Prehistórica Después de 4 Mil Años
- Descubren nuevo fósil de hace 8.7 millones de años en Turquía que desafía la historia sobre el origen de la humanidad
- Los arqueólogos descubren una lengua secreta perdida de hace 3.000 años
- La Queja Más Antigua del Mundo: La Historia Detrás de una Antigua Carta de Cliente Insatisfecho
- ‘Fósil viviente’: de la era de los dinosaurios, el árbol que sobrevivió a la gran extinción.
Comentarios