실수로 dd / dev / sda를 수행했습니다.


35

를 사용하여 ISO 이미지를 하드 디스크에 썼습니다 sudo dd if=image.iso of=/dev/sda. 나는 의미 /dev/sdc하고 지금 실행 sudo fdisk -l하면 6이 있어야하는 동안 / dev / sda에서 하나의 파티션 만 반환합니다. 데이터를 복구 할 수 있습니까?

아직 컴퓨터를 종료 (재부팅)하지 않았습니다.


24
dd다시 그 추악한 '데이터 파괴자'얼굴을 보여 주었다 :-( 그것은 (ISO 파일의 크기에 해당) 드라이브의 헤드 엔드를 덮어했다.이 손실 된 데이터 것은. 당신은 상당히 최근의 백업을 가지고 있나요 파일 당신은? 손실을 감당할 수없는 그렇지 않으면, 파티션 테이블 및 파일 시스템을 복구하는 데 노력을 위해 준비해야 복제 된 복사본에 가장 사용 TestDisk가을 '뒤에'발견하고, 실패 할 경우에도 더 열심히 작업은 파일 데이터를 복구 덮어 쓰는 드라이브의 부분 해당 용도로 PhotoRec 를 사용할 수 있습니다이 링크 참조 : cgsecurity.org
sudodus

6
gpt 파티션 된 드라이브이므로 드라이브 끝에 백업 파티션 테이블이 있습니다. ISO 크기의 드라이브 시작 부분 만 완전히 덮어 쓰여졌습니다. 파티션 크기에 따라 다른 파티션의 일부 또는 대부분을 복구 할 수 있습니다.
oldfred

10
@sudodus " dd는 추악한 '데이터 파괴자'얼굴을 다시 표시했습니다." -아무 관련이없는 경우를 제외하고 dd는 루트로 디스크 장치에 직접 액세스하는 것과 관련이 있습니다. 다른 도구는 같은 효과를 낼 수있었습니다. cat image.iso > /dev/sda똑같은 효과가 있었을 것입니다. 또는 pv .... 또는 어느 정도까지도 vi /dev/sda. 실제로 이것은 Linus Torvalds가 모뎀 장치가 아닌 하드 드라이브 장치를 사용하여 네트워크에 전화를 걸어 다이얼 시작 핸드 셰이크로 드라이브의 시작 부분을 덮어 쓴 이야기를 상기시킵니다 . 와 관련이 없습니다 dd.
marcelm

4
.iso파일 이 정확히 얼마나 큽 니까? 중단 했습니까 dd, 아니면 완료 되었습니까?
marcelm

4
@marcelm, 당신이 맞아요. 그러나 실제로는 사람들이 dd이와 같은 목적을 위해 (이 목적으로) 사용하고 있기 때문에 '데이터 파괴자'경고가 적절하다고 생각하지만 완전히 정확한 경고는 더 길어야합니다. " sudo dd if=image.iso of=/dev/sdx대량에 복제하는 것과 같은 명령 줄을 사용하지 마십시오. 올바른 대상 장치를 식별하고 선택하고 최종 검사 점이있는 도구를 사용하여 iso 파일에서 올바른 대상 장치 (예 : StartupDiskCreator, Disks, mkusb)로 복제 할 것인지 다시 확인하십시오. , Win32DiskImager. "
sudodus

답변:


65

컴퓨터가 여전히 켜져 있기 때문에 내용을 저장할 가능성이 높습니다.

먼저, sysfs파티션 테이블의 메모리 뷰에서 커널을 공개합니다. 현재 커널은 디스크 테이블을 다시 읽지 않았으며 파티션을 기억합니다. 내부 /sys/block/sda/에는 각 파티션마다 하나의 디렉토리가 있어야합니다. 이러한 각 서브 디렉토리에는 파티션의 위치 및 크기를 나타내는 파일 start및 파일 size이 섹터로 포함되어 있습니다. 디렉토리 fdisk의 정보를 사용하여 각 파티션을 순서대로 실행 한 다음 다시 만드십시오 sysfs. 새 파티션 테이블도 작성해야합니다. 새 파티션 테이블이 이전 테이블과 동일한 지 확인하십시오. 에서 확인할 수 있습니다 /sys/block/sda. 당신이 sda1최대를 볼 경우sda76 개의 파티션 만 있지만 MBR이 있었을 가능성이 높으며 그렇지 않으면 GPT 일 수 있습니다. 또한 이러한 파티션에 대한 플래그 및 유형을 설정해야합니다. 봐 /etc/fstab그리고 당신은 파티션의 종류에 대한 이삭 정보를보십시오, 당신의 분할 방식에 대한 코드에 사람들을 변환하는 위키 백과를 확인합니다.

파일 시스템을 사용할 수있는 것처럼 보이므로 파일 시스템 dd의 중요한 부분이 대부분 앞에 있기 때문에 파일 시스템을 덮어 쓰지 않았을 가능성이 있습니다 . 확인 /etc/fstab시스템의 어떤 부분에 해당하는 파티션을 확인하고 데이터의 양을 사용 dd하면 핵 공격 얼마의 견적을 얻기 위해 복사합니다. 좋은이 파일 시스템의 당신이 덮어 일부분 만 fsck 그것을 조금 해결할 수 (하지만 당신은 데이터의 좋은 청크를 잃었습니다).

아마도, 당신은 덮어 썼습니다 /boot. 커널을 다시 설치 ( aptitude)하고 GRUB2를 설치 ( grub-install) (첫 번째 및 두 번째 단계 모두 파괴)해야합니다. GRUB2는의 파일로 구성 /etc되므로 수동으로 아무것도 다시 만들 필요가 없습니다.


15
" /sys/block/sda/*/{start,end}이 정보로 파티션을 확인 하고 다시 만드십시오":이 부분을 조금 확장 할 수 있습니까? 그것은 사소한 작업이 아니며 다른 훌륭한 답변의 요점 인 것처럼 보입니다.
terdon

암호문 해독에 쉽게 출력, ............... 각 후 RETURN으로 프롬프트 쉘에서 다음을 입력 : sudo parted, unit s, print all,quit
하누

3
발견 할 때 중요한 정보를 다른 드라이브 (예 : USB 스틱)에 복사하십시오. 파티션 재생성 단계가 완벽하게 진행되지 않는 경우 여전히 실행중인 컴퓨터의 메모리에있는 기록을 원합니다. 또한 실행중인 컴퓨터가 여전히 작동하는 동안 가장 가치 있고 작은 파일 ( .bashrc홈 디렉토리의 파일 및 /etc실제 데이터 외에 다른 모든 점 파일 포함 )을 다른 디스크에 복사하십시오 . tar.gz는 전체 디렉토리를 복사하기에 좋은 형식입니다 (권한과 내용을 보존하기 때문에).
Peter Cordes

또한 커널이 파티션 레이아웃에 대해 어떻게 생각하는지 불확실한 경우 / boot 형식을 다시 포맷해야 할 수도 있습니다.
rackandboneman

1
@rackandboneman 커널은 파티션이 마운트 된 디스크에서 파티션 테이블을 다시 읽는 것을 거부합니다. 커널이 어떤 것도 불확실하지 않기 때문에 /boot이와 같이 재 포맷 하는 것은 완벽하게 "안전하다"( 이 상황에서 문자 그대로 다른 모든 것 )이다.
HTNW

21

힘든 일에 대해 읽어서 죄송합니다

현재 백업이없는 것 같습니다. 사용하여 힘든 행운에 대해 읽어 보시기 바랍니다.

sudo dd if=image.iso of=/dev/sdx

드라이브 문자를 사용한 위치 x= a많은 귀중한 데이터를 저장 한 하드 디스크 드라이브의 시작 부분을 덮어 씁니다.

당신은 첫 번째 사람이 아니며이 문제의 영향을받는 마지막 사람이 아닙니다. dd많은 웹 사이트에서 이와 같이 사용하는 것이 좋습니다. 그것은 강력하지만 위험한 방법입니다. 질문없이 지시하는 것을하기 때문입니다. 이러한 이유로 종종 '데이터 파괴자'라는 별명이 붙습니다.

@marcelm은이 별명이 불공평하다고 말합니다. 루트로 디바이스 파일에 직접 쓰면 위험이 발생하는 것이 맞습니다 . 따라서 해당 장치 파일에 쓰면 드라이브를 쉽게 덮어 쓰고 중요한 데이터를 파괴 할 수 있습니다 /dev/sdx. (이 답변 끝에 안전한 도구가 나열되어 있습니다.)

파티션 테이블, 파일 시스템 및 / 또는 파일 내용 복구

  • 드라이브를 사용하여 가능한 한 적게 수행하십시오. 무엇보다도 드라이브에 아무 것도 쓰지 마십시오. 데이터를 덮어 써서 상황을 악화시킬 수 있기 때문에 여전히 복구가 가능합니다.

  • 데이터가 가치가있는 경우 원래 (일부 덮어 쓴) 드라이브가 아닌 복제 된 사본 에서 작업 해야 합니다 . 이 링크를 참조하여 '파티션 테이블, 파일 시스템 및 / 또는 파일 복구의 고급 복구'로 스크롤하십시오.

    pendrive의 파티션 테이블 및 파일 시스템 복구

  • GUID 파티션 테이블 GPT가있는 경우 드라이브 끝에 /dev/sda파티션 테이블의 백업이 있으며 도구를 사용하여이 백업 테이블에서 기본 파티션 테이블을 복원 할 수 있습니다 gdisk. 자세한 내용은 설명서 man gdisk를 참조하십시오.

  • Testdisk 를 사용하여 파티션 테이블과 파일 시스템을 복원 할 수 있습니다.

    http://cgsecurity.org

    CGSecurity 웹 사이트의 지침과 @ElderGeek에서 제공하는 링크를 읽으십시오. 설치하는 동안 정전 후 파티션이 사라졌습니다

  • @CSM에서 제공하는 링크에 따라 gpart / gparted를 사용하여 파티션 테이블 및 파일 시스템을 복원 할 수도 있습니다 .

    방법 : 손실 된 파티션을 삭제되거나 손상된 파티션 테이블로 복원

  • PhotoRec : 파티션 테이블과 파일 시스템을 복구하지 못하면 일부 파일 데이터를 복구 할 수 있습니다. 헤드 엔드의 파일 (1-1.5GB)은 덮어 쓰기되고 손실되지만 드라이브의 해당 부분 뒤에있는 파일은 여전히 ​​존재합니다. http://cgsecurity.org의 PhotoRec 는 파일 시스템없이 '드라이브 표면에서'데이터를 복구 할 수있는 도구입니다. 공통 파일 형식의 시작 부분에있는 일반적인 데이터가 식별에 사용됩니다.

    다음 링크는 PhotoRec,

    https://www.cgsecurity.org/wiki/PhotoRec

    파일을 별도의 드라이브에있는 파티션에 저장해야합니다.

    디렉토리 구조를 복구 할 수 없으며 일반적으로 파일 이름 (및 권한 및 소유권이 아닌)을 복구 할 수 없으며 파일이 조각화 될 때 문제가 있지만 PhotoRec로 많은 파일을 복구 할 수 있습니다 (뿐만 아니라 사진, 기타 여러 일반적인 파일 형식). 그러나 이것은 크지 만 엄청난 양의 분류되지 않은 파일을 탐색하여 실제로 중요한 파일을 식별하고 의미있는 파일 이름으로 이름을 바꾸는 것은 많은 노력이 필요합니다.

Ubuntu로 USB 부팅 드라이브를 만드는 안전한 도구

나중에 올바른 대상 장치를 식별하고 선택하고 최종 검사 점이있는 도구를 사용 하여 iso 파일에서 올바른 대상 장치로 복제 할 것인지 다시 확인하십시오.

  • Ubuntu : Ubuntu Startup Disk Creator (Ubuntu 16.04 LTS 이상)
  • 리눅스에서 :

    • 디스크 별칭 gnome-disks,
    • mkusb ,
  • Windows의 경우 : Win32DiskImager .

예를 들어 최종 검사 점을 제공하는 추출 도구를 사용할 수도 있습니다.


1
나는 cgsecurity의 Testdisk를 보증 할 수 있으며, 과거에 시도했던 다른 대안보다 훨씬 잘 작동합니다. Testdisk는 유일하게 유용한 것을 구제 한 사람이었습니다. 그러나 작은 새끼가 드라이브 자체에서 파티션을 복구하려고 기본적으로 조심하십시오! xx
hanshenrik

1
+1. 또한 보증 할 수 있습니다 testdisk. 또한 / sda / sdb에 쓰지 못하게 하는 래퍼 스크립트dd 도 좋습니다.
WinEunuuchs2Unix

19

당신에 의해 dd명령, 당신은 / dev / sda를의 파티션 테이블과 멀리 image.iso의 크기가 간다 모든 데이터를 덮어.

따라서 달성 할 수있는 최선의 방법은 파티션 테이블 (정확한 크기)을 복원하여 최소한 / dev / sda의 끝까지 파티션을 복구하는 것입니다.


1
정확한 크기를 얻는 방법을 알고 싶다면 이 답변 의 두 번째 단락을 참조하십시오 .
wizzwizz4

16

백업에서 복원하지 않으면 완전히 복구 할 수있는 방법이 없습니다. DD가 파티션 테이블과 장치의 일부 데이터를 덮어 썼습니다.


19
그때 나는 모든 재해 복구 백업을 버려야한다고 생각합니다.
stumblebee

23
@Baaing Cow는 물론 대답이며 물론 데이터를 복구 할 수있는 방법이 없습니다. 그것이 데이터를 덮어 쓸 때의 의미입니다. 사라졌습니다.
psusi

22
@ ChaiT.Rex 적어도 지난 10 년 동안 만들어진 PC에서 찾을 수있는 모든 장비에 대해서는 신화적인 것 같습니다.
David Schwartz

19
@ ChaiT.Rex 디스크의 일부만 지워진 완전히 덮어 쓰지 않은 디스크에만 적용됩니다 . 그러나 전체 디스크를 지우거나 덮어 쓴 경우 데이터를 복구 할 수 없습니다. 전문가 또는 아닙니다.
토마스 워드

8
@BaaingCow 데이터를 복구 할 수있는 방법이 필요하다는 것을 알고 계신 경우 알려주십시오. 많은 사람들이 당신의 기술에 돈을 기꺼이 지불 할 것입니다!
Tim

9

드라이브가 별도의 파티션으로 파티션되어 /있고 /home파티션이 /home파티션 뒤에있는 경우 /데이터를 복구 할 수 있습니다. 대부분의 파티션이 덮어 쓴 위치를 나열하는 MBR. 그러나 gparted는 /home파티션을 복구 할 수 있습니다.

우분투 포럼에 관한이 글 은 그것을하는 방법에 대한 아이디어를 제공합니다. "gparted recover partition"을 검색하여 찾았습니다.

잃어버린 파티션을 찾으면 (확장 파티션 내부에있을 수 있음) 파티션 테이블에서 유일한 파티션으로 추가해야합니다.

이 작업을 마치면 복구 된 파티션을로 유지하라는 Linux를 다시 설치해야합니다 /home.


2

구조에 대한 테스트 디스크

나는 개인적으로 보증 할 수 TestDisk는 내가 반복적으로 복사하기위한 지침을 붙여 넣기 후 내 데이터를 저장 /dev/sdb하고을 변경 /dev/sdd하는 내 USB이었다. 한 번만 변경을 잊어 버렸고 /dev/sdb쓰레기통에 들어 갔습니다 .

쓰지 않도록 시스템 설정 /dev/sda

래퍼 스크립트를 만드는 것이 좋습니다 : `dd`가 SSD 또는 HDD를 파괴하지 않도록하십시오 . 이 보장하지만은 dd에 기록하지 /dev/sda또는 가능 /dev/sdb하거나 대용량 저장 장치의 다른.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.