Sengaja melakukan dd / dev / sda

35

Saya menulis gambar ISO ke hard disk saya menggunakan sudo dd if=image.iso of=/dev/sda. Maksud saya /dev/sdc, dan sekarang menjalankan sudo fdisk -lmengembalikan hanya satu partisi di / dev / sda sementara seharusnya ada 6. Apakah mungkin untuk memulihkan data saya?

Saya belum mematikan (reboot) komputer saya.

Sapi Baaing
sumber
24
ddtelah menunjukkan wajah 'Data Destroyer' jeleknya lagi :-( Ia telah menimpa ujung kepala drive (sesuai dengan ukuran file iso). Data yang ada di sana hilang. Apakah Anda memiliki cadangan yang cukup baru dari file yang Anda tidak mampu kehilangan? Kalau tidak, Anda harus bersiap untuk kerja keras untuk memperbaiki tabel partisi dan sistem file, terbaik pada salinan kloning menggunakan Testdisk , dan jika itu gagal, bahkan lebih sulit untuk memulihkan data file yang ditemukan 'di belakang' bagian dari drive yang ditimpa. Anda dapat menggunakan PhotoRec untuk tujuan itu. Lihat tautan ini, cgsecurity.org
sudodus
6
Apakah drive gpt dipartisi, ia memiliki keuntungan dari tabel partisi cadangan di akhir drive. Hanya awal dari drive ke ukuran ISO yang benar-benar ditimpa dan hilang. Tergantung pada ukuran partisi maka Anda mungkin dapat memulihkan sebagian atau sebagian besar partisi lainnya.
oldfred
10
@sudodus " ddtelah menunjukkan wajah 'Penghancur Data' yang jelek lagi" - Kecuali tidak ada hubungannya dd, itu ada hubungannya dengan secara langsung mengakses perangkat disk sebagai root. Alat lain mana pun bisa memiliki efek yang sama. cat image.iso > /dev/sdaakan memiliki efek yang sama persis. Atau pv .... Atau, sampai batas tertentu, bahkan vi /dev/sda. Bahkan, ini mengingatkan saya pada kisah di mana Linus Torvalds mencoba masuk ke jaringan menggunakan perangkat hard drive daripada perangkat modem, menimpa awal drive dengan jabat tangan dial-in . Tidak ada hubungannya dengan dd.
marcelm
4
Berapa besar sebenarnya Anda .isoberkas? Apakah Anda menyela dd, atau menjalankannya sampai selesai?
marcelm
4
@marcelm, Anda benar. Tetapi dalam kehidupan nyata, orang menggunakan ddseperti ini (untuk tujuan ini), jadi saya pikir peringatan 'Penghancur Data' relevan, meskipun peringatan yang sepenuhnya benar harus lebih lama: "Jangan gunakan baris perintah seperti sudo dd if=image.iso of=/dev/sdxuntuk mengkloning ke massa perangkat penyimpanan. Gunakan alat yang membantu Anda mengidentifikasi dan memilih perangkat target yang benar dan yang memiliki titik pemeriksaan akhir, sehingga Anda dapat memeriksa ulang apakah Anda akan mengkloning dari file iso ke perangkat target yang benar, misalnya StartupDiskCreator, Disk, mkusb , Win32DiskImager. "
sudodus

Jawaban:

65

Karena komputer Anda masih menyala, Anda memiliki peluang bagus untuk menyimpan barang.

Pertama, sysfsmemaparkan kernel dalam tampilan memori tabel partisi. Saat ini, kernel Anda belum membaca ulang tabel disk dan ia mengingat partisi Anda. Di dalam /sys/block/sda/, harus ada satu direktori untuk setiap partisi. Setiap subdirektori tersebut berisi file startdan file size, yang mewakili lokasi dan ukuran partisi, di sektor. Jalankan fdiskdan kemudian buat kembali setiap partisi (dalam urutan!) Dengan informasi dalam sysfsdirektori. Perhatikan bahwa Anda harus membuat tabel partisi baru juga. Pastikan tabel partisi baru Anda sama dengan yang sebelumnya. Anda dapat memeriksanya /sys/block/sda. Jika Anda melihat sda1hinggasda7sementara Anda hanya memiliki 6 partisi, Anda mungkin memiliki MBR, dan selain itu mungkin GPT. Anda juga perlu mengatur flag dan tipe untuk partisi ini. Lihatlah /etc/fstabdan cobalah untuk mendapatkan informasi tentang jenis partisi yang Anda miliki, lalu periksa Wikipedia untuk mengonversinya menjadi kode untuk skema partisi Anda.

Karena Anda tampaknya dapat menggunakan sistem file Anda, kemungkinan Anda ddtidak dapat menimpanya, karena sebagian besar bit penting dari sebuah sistem file ada di bagian depan. Periksa /etc/fstabuntuk melihat partisi mana yang sesuai dengan bagian mana dari sistem Anda, dan kemudian gunakan jumlah data yang dddisalin untuk mendapatkan perkiraan berapa banyak Anda nuked. Jika Anda hanya menimpa sebagian dari sistem file, suatu barang fsck mungkin dapat memperbaikinya sedikit (tetapi Anda telah kehilangan banyak data).

Kemungkinan besar, Anda menimpa /boot. Anda harus menginstal ulang kernel (with aptitude) dan instal ulang GRUB2 (with grub-install) (yang menghancurkan tahap pertama dan kedua). GRUB2 dikonfigurasikan dengan file-file /etc, jadi Anda tidak perlu membuat ulang apa pun secara manual.

HTNW
sumber
15
"Periksa /sys/block/sda/*/{start,end}dan buat kembali partisi Anda dengan informasi ini": dapatkah Anda sedikit memperluas ini? Ini bukan operasi sepele dan tampaknya menjadi poin utama dari jawaban Anda yang luar biasa.
terdon
Output yang lebih mudah untuk menguraikan, ketik ini di shell prompt dengan RETURN setelah setiap ...............: sudo parted, unit s, print all,quit
Hannu
3
Salin informasi berharga ke drive lain (mis. Stik USB) saat Anda menemukannya. Jika langkah rekreasi partisi tidak berjalan dengan sempurna, Anda ingin memiliki catatan tentang apa yang ada di memori komputer yang masih berjalan. Juga, salin file Anda yang paling berharga dan / atau kecil (termasuk hal-hal seperti .bashrcdan file dot lainnya dari direktori home Anda, dan semuanya /etc, selain data nyata Anda) ke disk lain ketika komputer Anda yang sedang berjalan masih berfungsi . tar.gz adalah format yang baik untuk menyalin seluruh direktori (karena mempertahankan hak akses dan sebagainya).
Peter Cordes
Dia juga kemungkinan perlu memformat ulang apa yang tadi / boot, yang agak berbahaya ketika ada ketidakpastian apa yang dipikirkan kernel tentang tata letak partisi Anda ...
rackandboneman
1
@ crackandboneman Kernel menolak untuk membaca kembali tabel partisi pada disk dengan partisi yang di-mount. Memformat ulang /bootseperti ini benar-benar "aman" (modulo benar-benar segalanya tentang situasi ini ) karena kernel tidak pasti tentang apa pun.
HTNW
21

Maaf membaca tentang keberuntunganmu

Saya kira Anda tidak memiliki cadangan saat ini, dan saya menyesal membaca tentang keberuntungan Anda menggunakan

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

tempat Anda menggunakan drive letter x= asehingga Anda menimpa awal hard disk drive tempat Anda menyimpan banyak data berharga.

Anda bukan orang pertama dan saya khawatir bukan orang terakhir yang terkena masalah ini. dddirekomendasikan di banyak situs web untuk digunakan seperti ini. Ini adalah metode yang kuat tetapi berbahaya, karena ia melakukan apa yang Anda perintahkan tanpa pertanyaan. Untuk alasan ini sering dijuluki 'Penghancur Data'.

komentar @marcelm, bahwa nama panggilan ini tidak adil. Dia benar bahwa menulis langsung ke file perangkat sebagai root menyebabkan risiko . Jadi perlu diketahui bahwa Anda dapat dengan mudah menimpa drive dan menghancurkan data berharga dengan menulis ke file perangkat yang sesuai /dev/sdx. (Alat yang lebih aman terdaftar di akhir jawaban ini.)

Pulihkan tabel partisi, sistem file, dan / atau konten file

  • Lakukan sesedikit mungkin dengan drive, dan di atas semua itu, jangan menulis apa pun untuk itu, karena dapat memperburuk situasi dengan menimpa data, yang masih mungkin untuk dipulihkan.

  • Jika data Anda berharga, Anda harus mengerjakan salinan yang dikloning , bukan drive asli (sebagian ditimpa). Lihat tautan ini, gulir ke bawah ke 'Perbaikan lanjutan pada tabel partisi, sistem file dan / atau pemulihan file'

    Perbaiki tabel partisi dan sistem file pendrive

  • Jika Anda memiliki tabel partisi GUID, GPT, ada cadangan tabel partisi di akhir drive /dev/sda, dan Anda mungkin dapat mengembalikan tabel partisi utama dari tabel cadangan ini menggunakan alat gdisk. Lihat manual man gdiskuntuk detailnya.

  • Anda dapat mengatur untuk memulihkan tabel partisi dan sistem file menggunakan Testdisk dari

    http://cgsecurity.org

    Baca instruksi di situs web CGSecurity dan juga tautan yang disediakan oleh @ElderGeek, Partisi menghilang setelah listrik padam saat menginstal

  • Anda juga dapat mengatur untuk mengembalikan tabel partisi dan sistem file menggunakan gpart / gparted sesuai dengan tautan yang disediakan oleh @CSM,

    HOWTO: Kembalikan Partisi yang Hilang ke Tabel Partisi yang Dihapus atau Rusak

  • PhotoRec : Jika Anda gagal memulihkan tabel partisi dan sistem file, Anda masih dapat memulihkan beberapa data file. File di ujung kepala, mungkin 1-1,5 GB, ditimpa dan hilang, tetapi file di belakang bagian drive itu masih ada. PhotoRec dari http://cgsecurity.org adalah alat, yang dapat memulihkan data 'dari permukaan drive' tanpa sistem file. Data khas di awal jenis file umum digunakan untuk identifikasi.

    Tautan berikut memberikan detail tentang PhotoRec,

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

    Anda harus menyimpan file ke partisi di drive yang terpisah.

    Tidak mungkin memulihkan struktur direktori dan biasanya tidak mungkin memulihkan nama file (dan bukan izin dan kepemilikan), dan ada masalah, ketika file terfragmentasi, tetapi banyak file dapat dipulihkan oleh PhotoRec (tidak hanya foto, juga banyak jenis file umum lainnya). Tapi, dan ini hal yang besar, tetapi, banyak kerja keras untuk mengarungi sejumlah besar file yang tidak disortir untuk mengidentifikasi file yang benar-benar penting, yang harus Anda ubah nama menjadi nama file yang bermakna.

Alat yang lebih aman untuk membuat drive boot USB dengan Ubuntu

Di masa mendatang, silakan gunakan alat yang membantu Anda mengidentifikasi dan memilih perangkat target yang benar dan yang memiliki pos pemeriksaan akhir, sehingga Anda dapat memeriksa ulang apakah Anda akan mengkloning dari file iso ke perangkat target yang benar, misalnya

  • Di Ubuntu: Ubuntu Startup Disk Creator (di Ubuntu 16.04 LTS dan versi yang lebih baru),
  • Di Linux:

    • Disk alias gnome-disks,
    • mkusb ,
  • Di Windows: Win32DiskImager .

Anda juga dapat menggunakan alat penggalian , yang menyediakan pos pemeriksaan akhir, misalnya

sudodus
sumber
1
saya dapat menjamin untuk cgsecurity's Testdisk, bekerja jauh lebih baik daripada alternatif lain yang pernah saya coba di masa lalu, di mana Testdisk adalah satu-satunya yang berhasil menyelamatkan apa pun yang bermanfaat. tapi hati-hati, keparat kecil itu default untuk mencoba memulihkan partisi Anda di drive itu sendiri !! xx
hanshenrik
1
+1. Saya juga bisa menjamin testdisk. Juga skrip wrapper untuk mencegah ddpenulisan ke / sda / sdb / apa pun juga merupakan ide bagus.
WinEunuuchs2Unix
19

Dengan ddperintah Anda, Anda menimpa tabel partisi / dev / sda dan semua data sejauh ukuran image.iso.

Jadi yang terbaik yang dapat Anda capai adalah mengembalikan tabel partisi Anda (dengan ukuran yang tepat) untuk memulihkan setidaknya partisi menjelang akhir / dev / sda.

muclux
sumber
1
Jika Anda ingin tahu cara mendapatkan ukuran yang tepat, lihat paragraf kedua dari jawaban ini .
wizzwizz4
16

Pendeknya memulihkan dari cadangan, tidak ada cara untuk sepenuhnya pulih. DD telah menimpa tabel partisi dan beberapa data perangkat.

stumblebee
sumber
19
Saya kira saya harus membuang semua cadangan pemulihan bencana saya.
stumblebee
23
@Baaing Cow, tentu saja ini adalah jawaban dan tentu saja tidak ada cara untuk memulihkan data. Itu artinya ketika Anda menimpa data: itu hilang.
psusi
22
@ ChaiT.Rex Itu sepertinya mitos, setidaknya pada peralatan apa pun yang mungkin Anda temukan di PC yang dibuat dalam dekade terakhir.
David Schwartz
19
@ ChaiT.Rex Itu hanya berlaku pada disk tidak sepenuhnya ditimpa di mana hanya bagian dari disk yang dihapus. Jika seluruh disk telah dihapus atau ditimpa, bagaimanapun, tidak ada pemulihan data. Spesialis atau tidak.
Thomas Ward
8
@BaaingCow Seperti yang Anda tahu bahwa pasti ada cara untuk memulihkan data, mohon beri tahu kami. Banyak orang akan bersedia membayar uang untuk teknik Anda!
Tim
9

Jika drive Anda dipartisi menjadi terpisah /dan /homepartisi, dan /homepartisi itu setelah /partisi, maka Anda dapat memulihkan data Anda. MBR yang mencantumkan tempat sebagian besar partisi telah ditimpa. Namun, gparted dapat memulihkan /homepartisi Anda .

Posting ini di Forum Ubuntu memberikan beberapa ide tentang bagaimana melakukannya; Saya menemukan bahwa dengan mencari "partisi pemulihan gparted".

Setelah Anda menemukan partisi Anda yang hilang (di mungkin berada di dalam partisi extended), Anda harus menambahkannya sebagai satu-satunya partisi di tabel partisi.

Setelah Anda selesai melakukannya, Anda harus menginstal ulang Linux, meminta agar partisi yang dipulihkan tetap /home.

CSM
sumber
2

Testdisk untuk menyelamatkan

Saya pribadi dapat menjamin untuk Testdisk yang menyimpan data saya setelah saya berulang kali menyalin dan menempel instruksi untuk /dev/sdbdan mengubahnya menjadi /dev/sddUSB saya. Hanya satu kali saya lupa untuk mengubahnya dan saya pergi /dev/sdbke tempat sampah.

Atur sistem Anda untuk tidak pernah menulis /dev/sda

Saya sangat menyarankan membuat skrip wrapper: Cegah `dd` dari menghancurkan SSD atau HDD . Ini memastikan ddtidak pernah menulis ke /dev/sdaatau mungkin /dev/sdbatau perangkat penyimpanan massal Anda lainnya.

WinEunuuchs2Unix
sumber