>  기사  >  시스템 튜토리얼  >  Linux 시스템에서 삭제된 파일을 복구하는 방법

Linux 시스템에서 삭제된 파일을 복구하는 방법

王林
王林앞으로
2024-01-14 18:48:05551검색
소개 사용자가 실수로 필요한 파일을 삭제한 경우 대부분의 경우 파일을 검색하거나 다시 빌드할 수 있는 쉬운 방법이 없습니다. 그러나 다행히도 파일을 복구할 수 있는 방법이 있습니다. 사용자가 파일을 삭제하면 해당 파일은 사라지지 않고 일정 기간 동안 숨겨질 뿐입니다.

작동 방식은 다음과 같습니다. 파일 시스템에는 저장 장치(예: 하드 드라이브, MicroSD 카드, 플래시 드라이브 등)의 파일 위치를 추적하는 파일 할당 테이블이라는 것이 있습니다. 파일이 삭제되면 파일 시스템은 파일 할당 테이블에서 두 가지 작업 중 하나를 수행합니다. 파일 할당 테이블의 파일 항목을 "여유 공간"으로 표시하거나 파일 할당 테이블의 파일 항목을 삭제하고 해당 공간 여유 공간으로 표시됩니다. 이제 새 파일을 저장 위치에 배치해야 하는 경우 운영 체제는 해당 파일을 비어 있는 위치에 배치합니다. 이 빈 공간에 새 파일을 쓴 후 삭제된 파일은 완전히 사라집니다. 삭제된 파일을 복구해야 할 경우, 사용자는 절대로 어떤 파일에든 다시 조작을 가해서는 안 됩니다. 해당 파일에 해당하는 "빈 공간"을 차지하게 되면 파일을 복구할 수 없기 때문입니다.

怎样在 Linux 系统中恢复被删除文件

복구 소프트웨어는 어떻게 작동하나요?

대부분의 파일 시스템은 파일을 삭제할 때 공간을 비어 있는 것으로 표시합니다. 이러한 파일 시스템에서 복구 소프트웨어는 파일 할당 테이블을 확인한 다음 삭제된 파일을 다른 저장 장치에 복사합니다. 파일을 복구해야 하는 다른 삭제된 저장 장치에 복사하면 사용자가 원하는 삭제 파일을 잃을 수 있습니다.

파일 시스템은 파일 할당 테이블의 항목을 거의 지우지 않습니다. 파일 시스템이 이 작업을 수행하면 복구 소프트웨어가 파일을 복구하는 것입니다. 복구 소프트웨어는 저장 장치의 파일 헤더를 검색합니다. 모든 파일에는 매직 넘버라고도 하는 파일 시작 부분에 특수 인코딩 문자열이 있습니다. 예를 들어, 컴파일된 JAVA 클래스 파일의 매직 넘버는 16진수로 "CAFEBABE"입니다. 따라서 이러한 유형의 파일을 복구하려는 경우 복구 소프트웨어는 "CAFEBABE"를 찾아 해당 파일을 다른 저장 장치에 복사합니다. 일부 복구 소프트웨어는 특정 파일 형식을 찾을 수 있습니다. 사용자가 PDF 파일을 복구하려는 경우 복구 소프트웨어는 16진수로 매직 넘버 "25504446"(ASCII 인코딩에서는 "%PDF")을 찾습니다. 복구 소프트웨어는 모든 매직 넘버를 찾은 다음 사용자는 복구할 삭제된 파일을 선택할 수 있습니다.

파일의 일부를 덮어쓰면 파일 전체가 손상됩니다. 파일을 복구할 수 있지만 해당 내용이 더 이상 사용되지 않는 경우가 많습니다. 예를 들어, 사진 뷰어는 손상된 파일에서 이미지를 생성할 수 없기 때문에 손상된 JPEG 파일을 복구하는 것은 의미가 없습니다. 따라서 사용자가 파일을 소유하더라도 파일은 쓸모가 없게 됩니다.

계속하기 전에 아래의 일부 정보는 복구 소프트웨어가 올바른 저장 장치를 찾는 데 도움이 될 것입니다. 모든 장치는 /dev/ 디렉터리에 마운트됩니다. 운영 체제에서 각 장치에 지정한 이름(관리자가 각 파티션이나 장치에 지정한 이름이 아님)은 특정 명명 규칙을 따릅니다.

첫 번째 SATA 하드 드라이브의 두 번째 파티션 이름은 sda2입니다. 이름의 첫 번째 문자는 스토리지 유형을 암시하며, 이 경우 SATA이지만 문자 "s"는 SCSI, FireWire 또는 USB를 나타낼 수도 있습니다. 두 번째 문자 "d"는 디스크를 나타냅니다. 세 번째 문자는 장치 번호를 나타냅니다. 즉, 문자 "a"는 첫 번째 SATA를 나타내고 "b"는 두 번째 SATA를 나타냅니다. 마지막 숫자는 파티션을 나타냅니다. 파티션 번호가 없는 장치 이름은 해당 설정의 모든 파티션을 나타냅니다. 위의 예에서 해당 이름은 sda 입니다. 이름의 첫 번째 문자는 PATA 하드 디스크(IDE)에 해당하는 "h"일 수도 있습니다.

다음은 명명 규칙의 몇 가지 예입니다. 사용자에게 SATA 하드 드라이브(sda)가 있고 이 장치에 sda1, sda2, sda3 및 sda4의 4개 파티션이 있다고 가정합니다. 사용자가 세 번째 파티션을 삭제하지만 네 번째 파티션 이름인 sda4는 네 번째 파티션이 포맷될 때까지 변경되지 않은 상태로 유지됩니다. 그런 다음 사용자는 파티션(sdb1-)이 있는 USB 메모리 카드(sdb)를 삽입하고 파티션(hda1-)이 있는 IDE 하드 드라이브를 추가한 다음 SCSI 하드 드라이브(sdc1)를 추가했습니다. 그런 다음 사용자는 USB 메모리 카드(sdb)를 제거했습니다. 이제 SCSI 하드 드라이브의 이름은 여전히 ​​sdc이지만 SCSI를 제거했다가 삽입하면 이름이 sdb로 변경됩니다. 다른 저장 장치가 있더라도 해당 IDE 드라이브는 첫 번째 IDE 드라이브이고 IDE 장치 이름은 SCSI, SATA, FireWire 및 USB 장치와 별도로 계산되므로 이름에 여전히 "a"가 있습니다.

TestDisk를 사용하여 복구:

각 복구 소프트웨어에는 고유한 기능, 특징 및 지원되는 파일 시스템이 있습니다. 다음은 TestDisk를 사용하여 다양한 파일 시스템에서 파일을 복구하기 위한 몇 가지 지침입니다.

FAT16, FAT32, exFAT(FAT64), NTFS 및 ext2/3/4:

TestDisk는 Linux, *BSD, SunOS, Mac OS X, DOS 및 Windows 운영 체제에서 실행되는 오픈 소스 무료 소프트웨어입니다. sudo apt-get install testdisk를 입력하여 TestDisk를 설치할 수도 있습니다. TestDisk에는 많은 기능이 있지만 이 기사에서는 파일 복구에만 중점을 둘 것입니다.

sudo testdisk 명령을 입력하여 루트 권한으로 터미널에서 TestDisk를 엽니다.

이제 TestDisk 명령줄 응용 프로그램이 실행됩니다. 터미널의 디스플레이가 변경됩니다. TestDisk는 사용자에게 로그를 보관할 수 있는지 묻습니다. 이는 전적으로 사용자에게 달려 있습니다. 사용자가 시스템 저장소에서 파일을 복원하는 경우 로그를 보관할 필요가 없습니다. 사용 가능한 옵션은 생성, 추가 및 로그 없음입니다. 사용자가 로그를 보관하려는 경우 로그는 사용자의 홈 디렉터리에 보관됩니다.

怎样在 Linux 系统中恢复被删除文件

다음 화면에는 저장 장치가 /dev/* 형식으로 나열됩니다. 내 시스템의 경우 시스템의 저장 장치는 /dev/sda입니다. 이는 내 저장 장치가 SATA 하드 드라이브(sd)이고 첫 번째 하드 드라이브(a)임을 의미합니다. 각 저장 장치의 용량은 기가바이트 단위로 표시됩니다. 위쪽 및 아래쪽 키를 사용하여 저장 장치를 선택하고 클릭하여 들어갑니다.

怎样在 Linux 系统中恢复被删除文件

다음 화면에는 파티션 테이블(파티션 매핑 테이블이라고도 함) 목록이 표시됩니다. 파일에 파일 구성 테이블이 있는 것처럼 파티션에도 파티션 테이블이 있습니다. 파티션은 저장 장치의 분할입니다. 예를 들어 거의 모든 Linux 시스템에는 EXT3/4와 Swap이라는 두 가지 이상의 파티션 유형이 있습니다. 각 파티션 테이블에 대해서는 아래에서 간략하게 설명하겠습니다. TestDisk는 모든 유형의 분할된 테이블을 지원하지 않으므로 이는 전체 목록이 아닙니다.

怎样在 Linux 系统中恢复被删除文件

  • Intel - 이 유형의 파티션 테이블은 Windows 시스템과 많은 Linux 시스템에서 매우 일반적입니다. MBR 파티션 테이블이라고도 합니다.
  • EFI GPT - 이러한 유형의 파티션 테이블은 Linux 시스템에서 일반적으로 사용됩니다. Linux 시스템의 경우 GPT(GUID 파티션 테이블) 파티션 테이블에는 논리 파티션이나 확장 파티션의 개념이 적용되지 않으므로 이 파티션 테이블을 가장 권장합니다. 즉, 각 파티션에 하나의 Linux 시스템이 있는 경우 Linux 사용자는 여러 유형의 Linux 시스템에서 멀티부팅할 수 있습니다. 물론 GPT 파티션 테이블을 사용하면 다른 이점도 있지만 이는 이 기사의 범위를 벗어납니다.
  • Humax - Humax 파티션 맵은 한국 회사인 Humax에서 생산하는 장치에 적합합니다.
  • Mac - Apple 장치용 Apple 파티션 맵(APM).
  • None - 일부 장치에는 파티션 테이블이 없습니다. 예를 들어, 많은 Subor 게임 콘솔은 파티션 맵을 사용하지 않습니다. 사용자가 다른 파티션 테이블 유형을 사용하는 장치에서 파일을 복구하려고 하면 사용자는 TestDisk가 파일 시스템이나 파일을 찾을 수 없는 이유에 대해 혼란스러워하게 됩니다.
  • Sun - Sun 시스템용 Sun 파티션 테이블.
  • Xbox -Xbox는 Xbox 파티션 맵을 사용하는 저장 장치용입니다.

사용자가 "Xbox"를 선택하면 시스템이 GPT 파티션 테이블을 사용하더라도 TestDisk는 파티션이나 파일 시스템을 찾을 수 없습니다. TestDisk가 사용자의 선택에 따라 실행된다면 잘못된 추측이 발생할 수 있습니다. (아래 그림은 파티션 테이블 유형이 잘못된 경우 출력되는 모습입니다)

怎样在 Linux 系统中恢复被删除文件

사용자가 자신의 기기에 맞는 옵션을 선택하면 다음 화면에서 '고급' 옵션을 선택하세요.

怎样在 Linux 系统中恢复被删除文件

이제 사용자는 자신의 저장 장치에 있는 모든 파일 시스템 또는 파티션 목록을 볼 수 있습니다. 사용자가 잘못된 파티션 맵을 선택한 경우 이 단계에서 사용자는 자신이 잘못된 선택을 했다는 것을 알게 됩니다. 오류가 없으면 텍스트 커서를 움직여 삭제된 파일이 포함된 파티션을 강조 표시합니다. 왼쪽 및 오른쪽 화살표 키를 사용하여 터미널 하단에 있는 목록을 강조 표시합니다. 그런 다음 Enter를 눌러 확인합니다.

怎样在 Linux 系统中恢复被删除文件

파일 및 디렉터리 목록이 포함된 새 화면이 나타납니다. 하얀색 파일명은 삭제되지 않은 파일이고, 빨간색 파일명은 삭제된 파일입니다. 가장 오른쪽 열은 파일 이름이고 오른쪽에서 왼쪽으로 다음 열은 파일 생성 날짜이며 왼쪽 열은 파일 크기(바이트/비트 단위)이며 맨 왼쪽에 "-"가 있습니다. , " "d", "r", "w" 및 "x" 열은 파일의 권한을 나타냅니다. "d"는 파일이 디렉터리임을 나타내며 다른 사용 권한 용어는 이 문서와 거의 관련이 없습니다. 목록 상단의 "."로 표시된 항목은 현재 디렉터리를 나타내고, 두 번째 줄의 ".."으로 표시된 항목은 현재 디렉터리의 상위 디렉터리를 나타내므로 사용자는 디렉토리가 위치한 줄.

예를 들어, 기본적으로 삭제된 파일들로 구성된 "Xaiml_Dataset" 디렉터리로 들어가고 싶습니다. 키보드에서 "c" 키를 누르면 "computers.xaiml" 파일이 복원되고 대상 디렉터리를 선택하라는 메시지가 표시됩니다. 물론 파일을 다른 파티션에 배치해야 합니다. 이제 홈 디렉토리에 있을 때 "c" 키를 누릅니다. (대상 디렉터리를 선택할 경우) 어떤 디렉터리가 강조 표시되어 있는지는 중요하지 않습니다. 현재 디렉터리가 대상 디렉터리이며 화면 상단에 "복사 완료" 메시지가 표시됩니다. 내 홈 디렉터리에는 Xaiml 파일이 포함된 "Xaiml_Dataset"이라는 디렉터리가 있습니다. 추가로 삭제된 파일에서 "c"를 누르면 대상 디렉터리를 묻지 않고 해당 파일이 새 폴더에 배치됩니다.

이 단계가 완료되면 정상적인 터미널 모양이 나타날 때까지 "q" 키를 반복해서 누르세요. "Xaiml_Dataset" 디렉터리는 루트 사용자만 액세스할 수 있습니다. 이 문제를 해결하려면 루트 권한을 사용하여 디렉터리 및 해당 하위 디렉터리에 대한 권한을 변경하십시오. 이렇게 하면 파일이 복원되고 사용자는 해당 파일에 액세스할 수 있습니다.

특별 ReiserFS:

ReiserFS 파일 시스템에서 파일을 복원하려면 먼저 파티션에 있는 모든 파일을 백업해야 합니다. 이 방법을 사용하면 특정 오류가 발생하면 파일이 손실될 수 있기 때문입니다. 그런 다음 다음 명령을 실행합니다. 여기서 DEVICE는 sda2 형식으로 명명된 장치를 나타냅니다. 일부 파일은 Lost+found 디렉토리에 저장되고 다른 파일은 원래 삭제된 위치에 저장됩니다.

으아악 프로그램에서 연 삭제된 파일 복구:

사용자가 실수로 파일을 삭제하고 해당 파일이 프로그램에 의해 열렸다고 가정해 보겠습니다. 파일이 하드 디스크에서 삭제되었음에도 불구하고 프로그램은 RAM에 있는 파일의 복사본을 사용하고 있습니다. 다행히 파일을 복구할 수 있는 두 가지 간단한 솔루션이 있습니다.

이 소프트웨어에 텍스트 편집기와 같은 저장 기능이 있는 경우 사용자는 파일을 다시 저장하여 텍스트 편집기가 파일을 하드 디스크에 쓸 수 있습니다.

뮤직 플레이어에 MP3 파일이 있는데 뮤직 플레이어에서 MP3 파일을 저장할 수 없다고 가정해 보겠습니다. 이 경우 파일을 복구하는 데 이전보다 더 많은 시간이 걸립니다. 불행하게도 이 접근 방식은 모든 시스템과 애플리케이션에서 작동한다고 보장되지 않습니다. 먼저, 다음 명령을 입력하세요.

으아악

위 명령은 smplayer에서 사용하는 모든 파일을 나열합니다. 이 목록은 mp3를 검색하기 위해 grep 명령으로 연결됩니다. 명령 입력은 다음과 유사합니다.

으아악

이제 다음 명령을 입력하여 RAM(Linux 시스템에서는 /proc/이 RAM에 매핑됨)에서 직접 파일을 복구하고 해당 파일을 선택한 폴더에 복사합니다. 그 중 cp는 복사 명령을 나타내고, 출력의 숫자 10037은 프로세스 수에서 나오며, 출력의 숫자 169는 파일 설명자를 나타내며, "~/Music/"은 대상 디렉터리, 마지막 " music.mp3"는 사용자가 원하는 디렉토리입니다. 복구된 파일의 이름입니다.

으아악 실제 삭제:

파일을 복구할 수 없도록 하기 위해 하드 드라이브를 "삭제"하는 명령이 있습니다. 하드 드라이브를 지우면 실제로 의미 없는 데이터가 하드 드라이브에 기록됩니다. 예를 들어, 많은 지우기 프로그램은 하드 드라이브에 0, 임의의 문자 또는 임의의 데이터를 씁니다. 공간이 차지하거나 손실되지 않으며, 지우개는 단순히 빈 비트를 덮어씁니다. 저장 장치에 파일이 가득 차고 여유 공간이 없을 경우 이전에 삭제한 파일은 모두 사라지며 복구할 수 없습니다.

하드 드라이브를 삭제하는 목적은 개인 데이터가 다른 사람에게 표시되지 않도록 하는 것입니다. 예를 들어, 회사에서 새 컴퓨터를 주문했는데 총괄 관리자가 기존 컴퓨터를 판매하기로 결정했지만 새 컴퓨터 소유자가 신용 카드 번호, 주소 등과 같은 회사의 기밀 정보나 고객 정보를 볼 수도 있습니다. 다행스럽게도 회사의 컴퓨터 기술자는 오래된 컴퓨터를 판매하기 전에 하드 드라이브를 지울 수 있었습니다.

삭제 프로그램 secure-delete를 설치하려면 sudo apt-get install secure-delete를 입력하세요. 이 명령은 삭제된 파일을 복구할 수 없도록 4개의 프로그램이 포함된 어셈블리를 설치합니다.

  • srm - 파일을 영구적으로 삭제합니다. 사용법: srm -f ./secret_file.txt
  • sfill - 빈 공간을 지웁니다. 사용법: sfill -f /mount/point/of/partition
  • sswap - 스왑 공간을 지웁니다. 사용법: sswap -f /dev/SWAP_DEVICE

컴퓨터가 실제로 삭제된 파일을 지우면 삭제 작업을 수행하는 데 시간이 더 오래 걸립니다. 특정 공간을 비어 있는 것으로 표시하는 것은 빠르고 쉽지만 파일을 영원히 사라지게 만드는 데는 시간이 걸립니다. 예를 들어, 저장 장치를 지우는 데는 디스크 크기에 따라 몇 시간이 걸릴 수 있습니다. 전체적으로 현재 시스템은 사용자가 휴지통을 비우더라도 원래 마음(또는 실수)을 바꿀 수 있는 또 다른 기회가 있기 때문에 꽤 잘 작동합니다.


위 내용은 Linux 시스템에서 삭제된 파일을 복구하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 linuxprobe.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제