우분투에서 실수로 삭제된 파일 또는 손상된 드라이브에서 데이터 복구

우분투에서 실수로 삭제된 파일 또는 손상된 드라이브에서 데이터 복구

2022-10-19 last update

14 minutes reading ubuntu debian
버전 1.0 작성자: Srijan Kishore
이 튜토리얼은 Linux 파일 시스템에서 실수로 삭제된 데이터에서 데이터를 복구하는 데 도움이 될 것입니다. 이는 사용자/관리자에 의한 매우 과감한 실수로 막대한 벌금이 부과됩니다. 이 스크립트는 데이터 관리를 위한 초보자/전문가에게 도움이 될 것입니다. 데이터 복구를 위해 TestDisk를 사용할 것입니다. 여기서는 스크립트를 사용하여 작업을 단순화했습니다.

1. 배경

TestDisk는 강력한 무료 데이터 복구 소프트웨어입니다. rm -rf 또는 shift+delete 같은 명령으로 충돌/삭제된 ext3/ext4 드라이브가 있다고 가정하고 TestDisk의 도움으로 데이터/파일을 복구할 수 있습니다.
  • 파티션 테이블 수정
  • FAT, exFAT, NTFS 및 ext2/ext3/ext4 파티션에서 파일 삭제 취소
  • 이러한 기능 외에도 TesdDisk에는 데이터 유지/관리를 위한 여러 기능이 있습니다.

    2. 요구사항

    TestDisk를 설치하고 손상된 드라이브에 데이터 복구 스크립트를 구현할 Ubuntu12.04 LTS를 사용하고 있습니다. 이 스크립트는 Ubuntu OS에서 잘 작동합니다. 하드 디스크가 삭제된 경우에도 하드 디스크를 우분투 시스템에 연결하고 스크립트를 실행하여 데이터를 복구하기만 하면 됩니다.

    3. 스크립트

    #!/bin/bash
    #######################################################################################################
    #######################################################################################################
    #######################################################################################################
    ######                                                                                          #######
    ######                                                                                          #######
    ######                 This script will help you to recover the accidentally                    #######
    ######                     deleted data from crashed linux file systems                         #######
    ######                          Script created by (Srijan Kishore)                              #######
    ######                                                                                          #######
    ######                                                                                          #######
    #######################################################################################################                                                                                       
    #######################################################################################################
    #######################################################################################################
    
    # User Check
    
    if [ "$USER" = 'root' ]
        then
            gdialog --title "User Check" --msgbox "User is root, you can execute the script successfully." 200 150        
            echo "User is root, you can execute the script successfully"
        else
            gdialog --title "User Check" --msgbox "User is not Root. Please run the script as root user." 200 150
            echo "User is not Root. Please run the script as root user."
            exit 1
    fi
    
    # Check your operating system
    
    cat /etc/debian_version >> /dev/null 
    if [ "$?" = 0 ]
        then
            echo "You are using ubuntu/debian"
            gdialog --title "Your Operating System" --msgbox "You are using ubuntu/debian"
        else
            gdialog --title "Your Operating System" --msgbox "You are not using debian/ubuntu.You can download the TestDisk from this link http://www.cgsecurity.org/wiki/TestDisk_Download"
    
        echo "You are not using debian/ubuntu. You can download the TestDisk from this link http://www.cgsecurity.org/wiki/TestDisk_Download"
            
    fi
    
    
    
    # Installing Testdisk
    testdisk /version >> /dev/null
    if [ "$?" = 0 ]
    then
        echo "Testdisk already installed"
    else
        echo "Installing Testdisk"
        apt-get update 
        apt-get upgrade    
            apt-get --force-yes -y install testdisk   
                    
                        gdialog --title "Success" --msgbox "Testdisk installed successfully" 100 50
                      
     fi
        
    # Set backup directory
    mkdir -p /root/result/lostfiles
    
    
    
    
    
    #Run the recovery program
    
    
    
    photorec /d /root/result/lostfiles
    
    # Filters files
     
    user=`ps aux | grep gnome-session | grep -v grep | head -1 | cut -d " " -f1`
    mkdir "/home/$user/recovered_output"
    
    mkdir "/home/$user/recovered_output/Debians"
    mkdir "/home/$user/recovered_output/rpms"
    mkdir "/home/$user/recovered_output/conf_files"
    mkdir "/home/$user/recovered_output/exe"
    mkdir "/home/$user/recovered_output/binaries"
    mkdir "/home/$user/recovered_output/Docs"
    mkdir "/home/$user/recovered_output/Pdfs"
    mkdir "/home/$user/recovered_output/Mbox"
    mkdir "/home/$user/recovered_output/Images"
    mkdir "/home/$user/recovered_output/Videos"
    mkdir "/home/$user/recovered_output/Sound"
    mkdir "/home/$user/recovered_output/ISO"
    mkdir "/home/$user/recovered_output/Excel"
    mkdir "/home/$user/recovered_output/Presentation"
    mkdir "/home/$user/recovered_output/Web_Files"
    mkdir "/home/$user/recovered_output/Archives"
    mkdir "/home/$user/recovered_output/Others"
    
    #Sorting the Recovered data
    
    
    find /root/result/ -name "*.doc"    -type f  -exec mv {} "/home/$user/recovered_output/Docs/" \;
    find /root/result/ -name "*.docx"   -type f  -exec mv {} "/home/$user/recovered_output/Docs/" \;
    find /root/result/ -name "*.odt"    -type f  -exec mv {} "/home/$user/recovered_output/Docs/" \;
    find /root/result/ -name "*.pdf"    -type f  -exec mv {} "/home/$user/recovered_output/Pdfs/" \;
    find /root/result/ -name "*.mbox"   -type f  -exec mv {} "/home/$user/recovered_output/Mbox/"  \;
    find /root/result/ -name "*.png"    -type f  -exec mv {} "/home/$user/recovered_output/Images/" \;
    find /root/result/ -name "*.jpg"    -type f  -exec mv {} "/home/$user/recovered_output/Images/" \;
    find /root/result/ -name "*.jpeg"   -type f  -exec mv {} "/home/$user/recovered_output/Images/" \;
    find /root/result/ -name "*.gif"    -type f  -exec mv {} "/home/$user/recovered_output/Images/" \;
    find /root/result/ -name "*.avi"    -type f  -exec mv {} "/home/$user/recovered_output/Videos/" \;
    find /root/result/ -name "*.mpeg"   -type f  -exec mv {} "/home/$user/recovered_output/Videos/" \;
    find /root/result/ -name "*.mp4"    -type f  -exec mv {} "/home/$user/recovered_output/Videos/" \;
    find /root/result/ -name "*.mkv"    -type f  -exec mv {} "/home/$user/recovered_output/Videos/" \;
    find /root/result/ -name "*.webm"   -type f  -exec mv {} "/home/$user/recovered_output/Videos/" \;
    find /root/result/ -name "*.wmv"    -type f  -exec mv {} "/home/$user/recovered_output/Videos/" \;
    find /root/result/ -name "*.flv"    -type f  -exec mv {} "/home/$user/recovered_output/Videos/" \;
    find /root/result/ -name "*.mp3"    -type f  -exec mv {} "/home/$user/recovered_output/Sound/" \;
    find /root/result/ -name "*.wav"    -type f  -exec mv {} "/home/$user/recovered_output/Sound/" \;
    find /root/result/ -name "*.deb"    -type f  -exec mv {} "/home/$user/recovered_output/Debians/" \;
    find /root/result/ -name "*.bin"    -type f  -exec mv {} "/home/$user/recovered_output/binaries/" \;
    find /root/result/ -name "*.exe"    -type f  -exec mv {} "/home/$user/recovered_output/exe/" \;
    find /root/result/ -name "*.rpm"    -type f  -exec mv {} "/home/$user/recovered_output/rpms/" \;
    find /root/result/ -name "*.conf"    -type f  -exec mv {} "/home/$user/recovered_output/conf_files" \;
    find /root/result/ -name "*.iso"    -type f  -exec mv {} "/home/$user/recovered_output/ISO/" \;
    find /root/result/ -name "*.xls"    -type f  -exec mv {} "/home/$user/recovered_output/Excel/" \;
    find /root/result/ -name "*.xlsx"   -type f  -exec mv {} "/home/$user/recovered_output/Excel/" \;
    find /root/result/ -name "*.csv"    -type f  -exec mv {} "/home/$user/recovered_output/Excel/" \;
    find /root/result/ -name "*.ods"    -type f  -exec mv {} "/home/$user/recovered_output/Excel/" \;
    find /root/result/ -name "*.ppt"    -type f  -exec mv {} "/home/$user/recovered_output/Presentation/" \;
    find /root/result/ -name "*.pptx"   -type f  -exec mv {} "/home/$user/recovered_output/Presentation/" \;
    find /root/result/ -name "*.odp"    -type f  -exec mv {} "/home/$user/recovered_output/Presentation/" \;
    find /root/result/ -name "*.html"   -type f  -exec mv {} "/home/$user/recovered_output/Web_Files/" \;
    find /root/result/ -name "*.htm"    -type f  -exec mv {} "/home/$user/recovered_output/Web_Files/" \;
    find /root/result/ -name "*.jsp"    -type f  -exec mv {} "/home/$user/recovered_output/Web_Files/" \;
    find /root/result/ -name "*.xml"    -type f  -exec mv {} "/home/$user/recovered_output/Web_Files/" \;
    find /root/result/ -name "*.css"    -type f  -exec mv {} "/home/$user/recovered_output/Web_Files/" \;
    find /root/result/ -name "*.js"     -type f  -exec mv {} "/home/$user/recovered_output/Web_Files/" \;
    find /root/result/ -name "*.zip"    -type f  -exec mv {} "/home/$user/recovered_output/Archives/" \;
    find /root/result/ -name "*.tar"    -type f  -exec mv {} "/home/$user/recovered_output/Archives/" \;
    find /root/result/ -name "*.rar"    -type f  -exec mv {} "/home/$user/recovered_output/Archives/" \;
    find /root/result/ -name "*.gzip"   -type f  -exec mv {} "/home/$user/recovered_output/Archives/" \;
    find /root/result/ -name "*.tar.gz" -type f  -exec mv {} "/home/$user/recovered_output/Archives/" \;
    find /root/result/ -name "*.7z"     -type f  -exec mv {} "/home/$user/recovered_output/Archives/" \;
    find /root/result/ -name "*.bz"     -type f  -exec mv {} "/home/$user/recovered_output/Archives/" \;
    find /root/result/ -name "*.bz2"    -type f  -exec mv {} "/home/$user/recovered_output/Archives" \;
    find /root/result/ -name "*.*"      -type f  -exec mv {} "/home/$user/recovered_output/Others/" \;
    chown -R $user "/home/$user/recovered_output"
    zenity --display :0 --info --width=350 --height=100 --title "Recovery Successful" --text " Data has been recovered successfully in recovered_output folder in your home directory."
    nautilus /home/$user/recovered_output &
    exit 0
          

    4. 스크립트 실행


    위의 스크립트를 복사하여 파일 viz에 붙여넣기만 하면 됩니다. script.sh 및 스크립트에 실행 권한을 부여합니다.
    chmod +x 스크립트.sh
    참고: 명령을 사용하여 루트로 스크립트를 실행하십시오.
    sudo -i                                       #### 시스템 로그인 비밀번호를 입력하세요##########
    스크립트를 실행하면 더 자세히 안내해 드립니다.
    sh 스크립트.sh

    5. 마무리


    먼저 스크립트는 스크립트를 실행하는 사용자가 루트인지 확인한 다음 TestDisk 도구 설치를 확인합니다. 데이터 복구를 위한 드라이브 선택 페이지로 리디렉션됩니다.
    복구하려는 드라이브를 선택하십시오.
    파일 시스템을 선택하십시오. 계속하려면 Enter 키를 누르십시오. 복구 완료 후 복구된 파일 수가 표시됩니다.

    다음과 같이 TestDisk 도구를 종료합니다. 스크립트가 성공 메시지에 대해 팝업됩니다.
    확인을 누르면 데이터가 홈 디렉토리의 recover_output 폴더에 복구됩니다. 건배 데이터를 복구했습니다.