Yeni bir bölümleme tablosu yazmak, ilk 512 bayttan başka bir şeyi değiştirecek


4

NAS'ımdan çıkarılmış 1TB'lik bir sürücüdeki verileri kurtarmaya çalışıyorum, ancak çalıştırdığımda fdisk -lu /dev/sdbgeçerli bir bölüm tablosu olmadığını belirten bir ileti alıyorum.

Anladığım kadarıyla bölümleme tablosu diskteki ilk 512 bayt içinde yer alıyor, bu yüzden şu anda bölümleme masası olmadığından, yeni bir tane yazarak herhangi bir zarar verebilecek miyim?

Testdisk, üç bölüm buldu, sürücüdeki sektörleri tarayarak, kesinlikle bu bölüm tablosunu diske yazarsam, yalnızca ilk 512 baytı etkileyeceğini varsayalım. Görünüşe göre doğru değiller, hiçbir şey kaybetmedim, tüm verilerim hala diskin geri kalanıyla ilgili değil mi?

Diskte başka bir şeyi değiştirmediğim sürece bölüm tablosunu istediğim kadar yeniden yazamaz mıyım? İlk 512 baytı sıkıştırmaya devam edip tekrar Testdisk'i çalıştırıyorsam, yine de üç orijinal bölümü diskteki orijinal konumlarında mı bulmalı?

Bu ilk 512 baytın dışındaki diskteki gerçek verileri etkileyebilecekse, bu bölüm tablosunu diske yazarak devam etmek istemiyorum.

Herhangi bir rehberlik takdir edilecektir.

Saygılar Zengin


1
Sürücüye yazmaya isteksiz olman akıllıca olur. İlk olarak, TestDisk ile alabileceğiniz tüm dosyaları başka bir sürücüye kaydedin. Bundan sonra, denemekten çekinmeyin. Bir bölüm tablosunun kendisinin yazılması verilere zarar vermemelidir. Ancak, “Devam

Yeni bölümleme tablosunu yazdıktan sonra sadece salt okunur işlemleri gerçekleştirin (dosya sistemi kontrolü, bağlama). Yalnızca sistemin dosya sistemlerini doğru gördüğünden emin olduktan sonra (ve tam yedeklemeden sonra ideal olarak) okuma-yazma moduna geçebilirsiniz.
pabouk

Tamam, teşekkürler beyler, sanırım bir Sanal Makinede bir test burada sıralı olabilir, ana diskte denemeden önce sonucu daha sonra
gönderirim

Yanıtlar:


2

Biraz kısa bir testten sonra ve yalnızca sanal bir ortamda TestDisk ve sfdisk ile (fdisk veya gparted gibi bir şeyde yeni bir bölüm tablosu oluşturmanın bunu bir dokunuşta bırakacağını doğrulayamıyorum) hayır demeye meyilliyim, bölüm tablosu yazmak ilk 512 bayttan başka hiçbir şeyi etkilemez.

Test adımları aşağıdadır ...

100 MB'lık bir sabit disk oluşturdum ve aşağıdaki gibi bölümlendirdim:

Sanal ikinci sürücüm

Daha sonra ilk 512 baytı silmeden önce her bölüme dosya ekledim ve dosya ekledim.

sudo dd if=/dev/zero bs=1 count=512 conv=notrunc of=/dev/sdb

Fdisk ile yapılan hızlı bir kontrol, bunun silindiğini göstermiştir.

richard@mint14 ~/Disktests $ sudo fdisk -lu /dev/sdb

Disk /dev/sdb: 104 MB, 104857600 bytes
255 heads, 63 sectors/track, 12 cylinders, total 204800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Bu yüzden diskleri başarıyla tarayarak bölümleri başarıyla bulan TestDisk'i çalıştırdım ve diske yazdım.

Bundan sonra sfdisk kullanarak bölümleme tablosunu attı

richard@mint14 ~/Disktests $ sudo sfdisk -d /dev/sdb > sdb_partitions.out
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.

richard@mint14 ~/Disktests $ cat sdb_partitions.out 
# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=     2048, size=    20480, Id=83, bootable
/dev/sdb2 : start=    22528, size=    61440, Id=83
/dev/sdb3 : start=    83968, size=    61440, Id= 5
/dev/sdb4 : start=   145408, size=    59392, Id= 7
/dev/sdb5 : start=    86016, size=    59392, Id=83

Bu dosyanın bir kopyasını yaptım ve tek bir 20 MB'lık bir bölüm oluşturmak için el ile düzenledim, böylece birincisi ikinci bölümle örtüşüp sürücüye geri yazdı

richard@mint14 ~/Disktests $ sudo sfdisk /dev/sdb < sdb_partitions.out_modified
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdb: 12 cylinders, 255 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an MSDOS signature
 /dev/sdb: unrecognised partition table type
Old situation:
No partitions found
New situation:
Warning: The partition table looks like it was made
  for C/H/S=*/173/42 (instead of 12/255/63).
For this listing I'll assume that geometry.
Units = sectors of 512 bytes, counting from 0

   Device Boot    Start       End   #sectors  Id  System
/dev/sdb1   *      2048     43007      40960  83  Linux
        start: (c,h,s) expected (0,48,33) found (0,32,33)
        end: (c,h,s) expected (5,158,42) found (2,172,42)
/dev/sdb2             0         -          0   0  Empty
/dev/sdb3             0         -          0   0  Empty
/dev/sdb4             0         -          0   0  Empty
Warning: partition 1 does not end at a cylinder boundary
Successfully wrote the new partition table

Re-reading the partition table ...

Fdisk ile yapılan bir başka hızlı kontrol, bu bölümleme tablosunun diske başarıyla yazıldığını gösterir.

richard@mint14 ~/Disktests $ sudo fdisk -lu /dev/sdb

Disk /dev/sdb: 104 MB, 104857600 bytes
173 heads, 42 sectors/track, 28 cylinders, total 204800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048       43007       20480   83  Linux

Sonunda orijinal bölüm tablosunu değiştirmek için sfdisk kullanmak

richard@mint14 ~/Disktests $ sudo sfdisk --force /dev/sdb < sdb_partitions.out 
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdb: 12 cylinders, 255 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an MSDOS signature
 /dev/sdb: unrecognised partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0

   Device Boot    Start       End   #sectors  Id  System
/dev/sdb1   *      2048     22527      20480  83  Linux
/dev/sdb2         22528     83967      61440  83  Linux
/dev/sdb3         83968    145407      61440   5  Extended
/dev/sdb4        145408    204799      59392   7  HPFS/NTFS/exFAT
/dev/sdb5         86016    145407      59392  83  Linux

Daha sonra bunların her birini tekrar monte ettim ve dosyaların orada ve dokunuşta olduğunu doğruladım.


1
Harika, kendi cevabınızı kabul etmelisiniz. Ayrıca, mantıksal bölümlerle bölümleme tablosu yazmak bölümleri ilk 512 bayt dışına yazacaktır . Ve sonra çoğu NAS diskinin kullandığı GPT var .
GnP
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.