ddrescue를 사용하여 Linux에서 데이터 복구

Ddrescueleul Sayonghayeo Linuxeseo Deiteo Boggu



ddrescue는 하드 드라이브, SSD, RAM 디스크, CD, DVD 및 USB 저장 장치와 같은 블록 장치 또는 파일에서 데이터를 복구하는 데 사용되는 도구입니다. 한 블록 장치에서 다른 블록 장치로 데이터를 복사하여 손상된 데이터 블록은 그대로 두고 좋은 블록만 이동합니다. ddrescue는 복구 작업 중에 간섭이 필요하지 않기 때문에 완전히 자동화된 강력한 복구 도구입니다. 또한, 언제든지 중지하고 재개할 수 있습니다. ddrescue 맵 파일 . ddrescue의 다른 주요 기능은 다음과 같습니다.
  • 복구된 데이터를 덮어쓰지 않고 반복 복구 시 공백을 메웁니다. 그러나 도구가 명시적으로 수행하도록 지시하는 경우 잘릴 수 있습니다.
  • 여러 파일이나 블록에서 단일 파일로 데이터를 복구합니다.
  • SATA, ATA, SCSI, MFM 드라이브, 플로피 디스크 및 SD 카드와 같은 여러 유형의 장치 인터페이스를 지원합니다.

이 가이드에서는 매우 유용한 데이터 복구 도구를 살펴보겠습니다. 또한 설치 과정과 이를 사용하여 블록 장치나 파티션을 복구하는 방법에 대해서도 설명하겠습니다.

메모: 이 가이드의 지침은 Linux 배포판(Ubuntu 22.04)을 사용하고 있습니다. ddrescue 유틸리티의 설치 프로세스는 다를 수 있지만 지침은 모든 Linux 배포판에서 동일합니다.







ddrescue 설치 중

특히 Linux에 ddrescue를 설치하려면 우분투 그리고 그 맛이나 데비안 기반 배포판에서는 다음을 사용합니다.



sudo 적절한 설치하다 gddrescue

그것을 설치하려면 REHL , 페도라 , 그리고 CentOS , 먼저 따뜻한 (Enterprise Linux용 추가 패키지).



sudo 냠 설치해 따뜻한 릴리스

위 명령은 해당 배포판의 최신 버전에 대한 것입니다.





그런 다음 다음 명령을 실행하여 ddrescue를 설치합니다.

sudo 냠 설치해 구출

다음과 같은 Arch 기반 Linux 배포판의 경우 아치-리눅스 그리고 만자로 , 아래 명령을 사용하여 ddrescue 복구 유틸리티를 설치하십시오.



sudo 팩맨 -에스 구출

Ubuntu 22.04를 사용하고 있으므로 APT 패키지 관리자를 사용하여 설치하겠습니다.

기본 이해

ddrescue 도구를 사용하여 데이터를 복구하기 전에 복구 프로세스를 처음 접하는 사용자는 Linux의 일부 명명 규칙을 이해하는 것이 좋습니다.

Linux는 블록(장치)을 파일로 인식하여 /개발자 예배 규칙서. /dev 디렉토리의 파일을 나열하려면 다음을 사용하십시오. ls /dev 명령.

그만큼 하드 드라이브 (저장 블록)은 다음과 같이 표시됩니다. SD 그 뒤에 알파벳이 옵니다. 저장 장치가 여러 개인 경우 파일은 /dev/sd로 표시됩니다. ㅏ, /dev/sd 비, 등등.

저장 장치가 있는 경우 파티션 , /dev/sda와 같이 해당 드라이브 파일 이름이 포함된 숫자로 표시됩니다. 1 , /dev/sda 2 , 등등.

시스템에 연결된 모든 블록 및 기타 장치를 나열하려면 목록 블록을 사용하십시오. lsblk 명령:

lsblk

ddrescue 명령은 전체 블록(MBR 및 파티션 포함) 또는 파티션도 복구할 수 있습니다. 반면, 특정 파티션에서 특정 파일만 복구해야 하는 경우 전체 블록 대신 파티션을 복구하는 것이 좋습니다.

중요한 고려사항

ddrescue 유틸리티를 사용하기 전에 몇 가지 핵심 사항을 고려해야 합니다.

  • 마운트된 블록을 복구하려고 시도하지 마십시오. 블록이 읽기 전용 모드에 있어서는 안 됩니다.
  • I/O 오류가 있는 블록을 복구하려고 시도하지 마십시오.
  • 시스템은 재부팅 시 입력 및 출력 장치 이름을 변경할 수 있습니다. 복사 프로세스를 시작하기 전에 장치 이름이 올바른지 확인하십시오.
  • 별도의 블록을 출력 장치로 사용하는 경우 장치의 모든 데이터를 덮어쓰게 됩니다.

ddrescue 사용

ddrescue 유틸리티를 설치하고 명명 규칙을 이해한 후 다음 단계는 오류가 있는 디스크를 식별하고 ddrescue 도구를 사용하여 복구하는 것입니다.

손상된 블록 복구

첫 번째 예는 전체 블록을 복구하는 프로세스를 포함합니다. 먼저 다음을 사용하여 블록을 나열합니다. lsblk 명령:

lsblk -영형 이름, 크기, FS 유형

그만큼 -영형 플래그는 명령이 출력해야 하는 정보(필드) 유형을 지정하는 데 사용됩니다. 나는 다음을 언급했다. 이름 , 크기 , 그리고 FSTYPE 또는 파일 시스템 유형.

이제 복구된 이미지 파일을 저장할 대상 블록, 파티션 및 위치를 식별할 수 있습니다.

주목해야 할 또 다른 중요한 점은 Linux에서 블록 이름은 부팅 시 동적으로 할당되며 재부팅 후에는 블록 이름이 변경될 수 있다는 것입니다. 따라서 블록 이름을 기록할 때 주의하세요.

이제 다음 구문을 사용하여 루트 디렉터리에 로그 파일이 있는 이미지 파일로 블록을 복구합니다.

sudo 구출 -디 -rX / 개발자 / [ 차단하다 ] [ / 이름 ] .img [ 로그파일_이름 ] .통나무

메모: 바꾸다 [차단하다] , [경로/이름] 이미지 파일의 [로그파일_이름] 그에 따라 선호하는 이름을 사용합니다.

이 예에서는 /dev/sda 이미지 파일 이름의 루트 디렉터리에 회복.img . 언제든지 복구를 재개하려면 맵 파일이라고도 하는 로그 파일이 필수적입니다.

sudo 구출 -디 -r2 / 개발자 / sda2 복구.img 복구.로그

위 명령에는 두 가지 중요한 플래그가 사용됩니다.

–간접 커널 캐시를 무시하고 디스크에 직접 액세스하도록 도구에 지시하는 데 사용됩니다.
RX –재시도 통과 불량 섹터를 X번 재시도하도록 도구에 지시하는 데 사용됩니다.

위 명령을 실행하면 파일 브라우저에 다음과 같은 두 개의 파일이 나타나는 것을 볼 수 있습니다. 회복.img 그리고 복구.로그 .

복구 시간은 입력 블록의 크기와 손상 정도에 따라 다릅니다. 대규모 블록을 복구하는 경우 프로세스를 완료하는 데 몇 시간 또는 며칠이 걸릴 수 있으므로 로그 파일을 보유하는 것이 좋습니다.

위 명령의 출력은 다음과 같습니다.

출력 이미지에서, 아이포스 복사가 시작되는 입력 파일의 입력 위치이며 궤양 데이터가 기록되는 출력 파일의 출력 위치입니다.

그만큼 시도하지 않은 시도 대기 중인 블록의 크기입니다. 그만큼 구출됨 성공적으로 복구된 블록의 크기를 나타냅니다. 그만큼 구출된 비율 성공적인 데이터 복구를 백분율로 나타냅니다. 용어, 트리밍되지 않은 , 폐기되지 않은 , 불량 섹터 , 그리고 나쁜 지역 자명하다. 그러나, 그 읽기 오류 용어는 실패한 읽기 시도를 숫자로 나타냅니다.

그만큼 런타임 도구가 프로세스를 완료하는 데 걸린 시간을 표시하고, 남은 시간 복구 프로세스를 완료하는 데 남은 시간입니다. 위의 출력은 프로세스가 완료되었기 때문에 남은 시간 0을 표시합니다. 완료되지 않은 프로세스의 다음 이미지에서 출력을 읽어보세요.

로그 파일에서 무엇을 얻는지 살펴보겠습니다. 생성된 로그 파일을 열려면 vim 복구.log 명령.

그만큼 현재 상태 +는 프로세스가 완료되었음을 의미하고, 현재_위치 블록의 위치입니다.

현재 상태 목록은 다음 표에 나와 있습니다.

? 사자
* 트리밍
/ 스크랩
재시도 중
에프 지정된 블록 채우기
G 로그 파일 생성
+ 프로세스가 완료되었습니다.

그 아래 로그 파일에는 아래 나열된 문자 형식으로 이전에 복구된 블록의 상태 표시가 있습니다.

? 블록이 시도되지 않았습니다.
* 트리밍되지 않은 실패한 블록
/ 폐기되지 않은 실패한 블록
불량 섹터 실패 블록
+ 완성된 블록

이미지 파일을 새 블록으로 복원

복구 프로세스가 완료되면 이미지 파일이 생성됩니다. 이제 손상된 드라이브에서 새 드라이브로 이동하고 싶을 수도 있습니다. 이미지 파일을 새 블록으로 이동하려면 먼저 해당 블록을 시스템에 연결한 다음 lsblk 명령.

그렇다고 가정해보자 /dev/sdb , 다음 명령을 사용하여 이미지를 새 블록에 복사합니다.

sudo 구출 -에프 회복.img / 개발자 / sdb 로그파일.log

그만큼 -에프 플래그는 데이터가 있는 경우 새 블록을 덮어쓰는 데 사용됩니다. 이전에 저장된 로그 파일과 별도로 유지하려면 로그 파일 이름이 달라야 합니다.

위의 작업은 다음을 사용하여 수행할 수도 있습니다. dd , 파일을 복사하는 데 사용되는 또 다른 강력한 명령입니다.

sudo dd 만약에 =recovery.img ~의 = / 개발자 / sdb

복원하기 전에 새 블록은 복구된 블록 전체를 보관할 수 있을 만큼 충분히 커야 한다는 점을 명심하세요. 예를 들어 복구 블록이 5GB인 경우 새 블록은 5GB보다 커야 합니다.

복구된 이미지 파일이 많은 오류를 렌더링하는 경우 다음을 사용하여 복구할 수 있습니다. fsck Linux에서는 어느 정도 명령을 사용할 수 있습니다. Windows에서는 다음을 사용할 수 있습니다. CHKDSK 또는 SFC 이를 수행하도록 명령합니다. 그러나 복구는 손상된 파일이 생성한 오류 수에 따라 달라집니다.

이제 복구 프로세스 및 복원이 완료되었습니다. 주목해야 할 또 다른 중요한 점은 이미지 파일을 생성한 다음 새 블록에 복사하는 대신 손상된 블록을 다른 블록에서 직접 복구할 수 있다는 것입니다. 자, 다음 섹션에서는 이 과정을 자세히 다루겠습니다.

블록을 다른 블록으로 복구

블록을 새로운 블록으로 직접 복구하려면 먼저 블록을 시스템에 연결한 후 다시 사용하십시오. lsblk 블록 이름을 식별하는 명령입니다. 잘못된 블록 이름은 전체 프로세스를 망칠 수 있으며 데이터가 손실될 수 있습니다.

소스 블록과 대상 블록을 식별한 후 다음 명령을 사용하여 블록을 복구합니다.

sudo 구출 -디 -에프 -r2 / 개발자 / [ 원천 ] / 개발자 / [ 목적지 ] 백업.로그

가정해보자 /dev/sdb 은 대상 블록이므로 복사하려면 /dev/sda 새 블록에 대한 디렉토리 사용:

sudo 구출 -디 -에프 -r2 / 개발자 / sda / 개발자 / sdb 백업.로그

이 프로세스를 시도하기 전에 이전 섹션에서 언급한 중요한 고려 사항을 다시 한 번 확인하세요.

복구된 이미지 파일에서 특정 데이터 복구

대부분의 경우 데이터 복구의 목적은 손상된 드라이브에서 특정 파일을 찾는 것입니다. 특정 파일에 액세스하려면 이미지 파일을 마운트해야 합니다. Linux에서는 다음을 사용하여 복구된 이미지 파일을 탐색할 수 있습니다. 명령.

이미지 파일을 마운트하기 전에 이미지 파일의 내용을 추출할 폴더나 디렉터리를 만드십시오.

mkdir 복구 마운트

다음으로 다음을 사용하여 이미지 파일을 마운트합니다.

sudo -영형 루프 복구.img ~ / 복구 마운트

-o 플래그는 옵션을 나타내고 루프 옵션은 이미지 파일을 블록 장치로 처리하는 데 사용됩니다.

이제 다음 스크린샷에 표시된 대로 이미지 파일의 내용에 액세스할 수 있습니다.

블록을 마운트 해제하려면 다음을 사용하십시오. 마운트 해제 명령.

sudo 마운트 해제 ~ / 복구 마운트

고급 기능

특정 지점부터 복구를 시작하려면 -나 깃발 또는 –입력 위치 . 바이트 단위여야 하며 기본적으로는 0 바이트. 특정 지점부터 복사를 재개하는 것이 중요합니다. 예를 들어 10GB 지점에서 복사 프로세스를 시작하려면 다음 명령어를 사용하세요.

sudo 구출 -i10GiB / 개발자 / sda 이미지파일.img 로그파일.log

입력 장치의 최대 크기를 정의하려면 -에스 플래그가 사용됩니다. 그만큼 -에스 크기를 나타내며 다음과 같이 사용할 수도 있습니다. -크기 바이트 단위. 도구가 입력 파일의 크기를 인식하지 못하는 경우 이 옵션을 사용하여 지정하십시오.

sudo 구출 -s10GiB / 개발자 / sda 이미지파일.img 로그파일.log

그만큼 -묻다 옵션은 복사 프로세스를 시작하기 전에 입력 및 출력 블록을 확인하라는 메시지를 표시하므로 매우 편리할 수 있습니다. 앞에서 설명한 것처럼 시스템은 블록에 이름을 동적으로 할당하고 재부팅 시 변경됩니다. 따라서 이 경우 이 옵션이 유용할 수 있습니다.

sudo 구출 --묻다 / 개발자 / sda 이미지파일.img 로그파일.log

또한 몇 가지 다른 옵션 목록이 아래에 언급되어 있습니다.

-아르 자형 -뒤집다 복사 방향을 반대로 바꾸려면
-큐 -상당히 모든 출력 메시지를 억제하려면
-안에 -말 수가 많은 자세히 설명하자면 모든 출력 메시지는
-피 –사전 할당 출력 파일에 대한 스토리지를 사전 할당하려면
-피 –데이터 미리보기 최근에 읽은 데이터의 표시 줄은 기본적으로 3줄입니다.

ddrescue 작동 방식

ddrescue는 4단계로 구분되는 강력한 복구 알고리즘을 사용합니다.

1. 복사

2. 트리밍

3. 긁기

4. 재시도

ddrescue 알고리즘 실행은 다음 이미지에 표시됩니다.

결론

그만큼 구출 데이터를 복사하여 손상되거나 고장난 드라이브에서 다른 드라이브로 데이터를 복구하는 데 사용되는 강력한 복구 도구입니다. 기본 패키지 관리자의 도움을 받아 모든 Linux 배포판에 쉽게 설치할 수 있습니다. 이 가이드에 언급된 도구를 사용하기 전에 중요한 고려 사항에 유의하세요. 데이터를 복사하는 과정은 간단합니다. 드라이브를 마운트 해제하고 소스 드라이브 이름 및 대상 드라이브 이름과 함께 ddrescue 명령을 사용합니다. 복구 프로세스를 재개하는 데 매우 유용하므로 로그 파일을 사용하는 것을 잊지 마십시오.