Version 2.0
Autor:Srijan Kishore
Dieses Tutorial hilft Ihnen, Daten aus versehentlich gelöschten Daten von Linux-Dateisystemen wiederherzustellen. Dies ist ein sehr drastischer Fehler eines jeden Benutzers/Administrators, der enorme Strafen nach sich zieht. Dieses Skript wird ein Segen für Neulinge/Experten für Datenmanagement sein. Ich werde TestDisk zur Datenwiederherstellung verwenden. Hier habe ich die Aufgabe mit Hilfe eines Skripts vereinfacht.
1. Hintergrund
TestDisk ist eine leistungsstarke kostenlose Datenwiederherstellungssoftware. Angenommen, Sie haben ein ext3/ext4-Laufwerk, das mit rm -rf oder shift+delete abgestürzt/gelöscht wurde Wie Befehle können Sie mit Hilfe von TestDisk die Daten/Datei wiederherstellen.TestDisk kann verwendet werden, um
- Partitionstabelle reparieren
- Stellen Sie Dateien von FAT-, exFAT-, NTFS- und ext2/ext3/ext4-Partitionen wieder her
Neben diesen Funktionen verfügt TesdDisk über mehrere Funktionen zur Datenpflege/-verwaltung
2. Voraussetzung
Ich verwende CentOS, auf dem ich die TestDisk installieren und das Datenwiederherstellungsskript auf einem abgestürzten Laufwerk implementieren werde. Dieses Skript funktioniert gut mit CentOS/Fedora/Redhat. Selbst wenn eine der Festplatten gelöscht wird, verbinden Sie einfach die Festplatte mit dem CentOS-Rechner und führen Sie das Skript aus, um die Daten wiederherzustellen.3. Skript
#!/bin/bash ####################################################################################################### ####################################################################################################### ####################################################################################################### ###### ####### ###### ####### ###### This script will help you to recover the accidentally ####### ###### deleted data from crashed linux file systems ####### ###### Version-2 ####### ###### Script created by (Srijan Kishore) ####### ###### ####### ###### ####### ####################################################################################################### ####################################################################################################### ####################################################################################################### # User Check if [ "$USER" = 'root' ] then whiptail --title "User check" --msgbox "User is root, you can execute the script successfully." 8 78 echo "User is root, you can execute the script successfully" else whiptail --title "User check" --msgbox "User is not Root. Please run the script as root user." 8 78 echo "User is not Root. Please run the script as root user." exit 1 fi # Check your operating system cat /etc/redhat-release >> /dev/null if [ "$?" = 0 ] then whiptail --title "Your OS" --msgbox "You are using CentOS/Redhat/Fedora" 8 78 echo "You are using CentOS/Redhat/Fedora" else whiptail --title "Your OS" --msgbox "You are not using CentOS/Redhat/Fedora.You can download the TestDisk from this link http://www.cgsecurity.org/wiki/TestDisk_Download" 8 78 echo "You are not using CentOS/Redhat/Fedora.You can download the TestDisk from this link 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 "Repository requirement" --msgbox "You need to add rpmforge repository to install testdisk" 8 78 if [[ `uname -i` = 'i386' && $ver = 6 ]] then echo "you are running i386 with 6 version" 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 "you are running i386 with 6 version" 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 "you are running i386 with 5 version" 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 "you are running x86_64 with 5 version" 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 "you are running i386 with 4 version" 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 "you are running x86_64 with 4 version" yum install -y http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el4.rf.x86_64.rpm fi else whiptail --title "Repository requirement" --msgbox "You already have TestDisk repos configured" 8 78 echo "You already have TestDisk repos configured" fi # TestDisk installation testdisk --version >> /dev/null if [ "$?" = 0 ] then whiptail --title "Info" --msgbox "Testdisk already installed" 8 78 echo "Testdisk already installed" else whiptail --title "Info" --msgbox "Testdisk not installed, installing Testdisk" 8 78 echo "Testdisk not installed, installing 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 "Data recovery" --msgbox "You are proceeding towards recovering the data from the lost drive. Please select the affected drive to get the data recovered" 8 78 photorec /d /root/result/lostfiles else whiptail --title "Folder Exists" --msgbox "There is already an existing folder viz /root/result/lostfiles, you are adviced to rename/remove the folder to allow the data recovery process" 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 "Congratulations" --msgbox "You have successfully recovered your data in folder /home/recovered_output cheers :)" 8 78 echo "You have successfully recovered your data in folder /home/recovered_output cheers :)" exit 0
4. Skriptausführung
Kopieren Sie einfach das obige Skript und fügen Sie es in die Datei ein, nämlich. script.sh &geben Sie dem Skript Ausführungsberechtigungen.
chmod +x script.sh
Hinweis:Bitte führen Sie das Skript mit root aus, indem Sie den Befehl
verwendensu - #### Geben Sie Ihr Root-Passwort ein##########
Führen Sie das Skript aus und es führt Sie weiter.
sh script.sh
5. Abschluss
Zuerst wird das Skript bestätigen, ob der Benutzer, der das Skript ausführt, root ist, dann wird es nach der TestDisk-Tool-Installation suchen, die das automatische Hinzufügen des Repositorys beinhaltet. Es leitet Sie zur Laufwerksauswahlseite für die Datenwiederherstellung weiter.
Es überprüft Ihr Betriebssystem.
Das Skript überprüft und fügt automatisch das erforderliche Repository für TestDisk hinzu.
Das Skript überprüft die Installation für die TestDisk.
Wählen Sie das Laufwerk aus, das Sie wiederherstellen möchten.
Beenden Sie den Bildschirm nach Abschluss des Vorgangs.
Prost, Sie haben Ihre Daten wiederhergestellt.