Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak wykonać kopie posektorową do pliku

migol21 02 Cze 2009 20:21 55197 0
  • #1 02 Cze 2009 20:21
    migol21
    Specjalista HDD Recovery

    Celem opisu jest opisanie sposobu na wykonanie kopi posektorowej - dokładnego odwzorowania ,bit po bicie do pliku.

    Potrzebna jest ona wtedy gdy chcemy zabezpieczyć dane przed ich utratą lub kiedy chcemy je odzyskać z uszkodzonego nośnika ,najczęściej dysku. Tego rodzaju kopię do pliku ,robi się wtedy gdy chcemy wykonać dokładne odwzorowanie danych ,bez względu na sposób ich zapisu logicznego i strukturę a nie posiadamy całego dysku do wykonania kopi na cały dysk.

    Do wykonania kopi posektorowej do pliku możemy użyć
    1) Programu DMDE. Tu go można pobrać : http://softdm.com/download.html..
    2) Polecenie linuxa (do wykonania kopi musisz mieć uprawnienia root-a). Linux-a tak zwanego Live-CD ,można uruchomić z CD ,FDD lub innych nośników startowych. (Tutaj opis Linux Live-CD, Tutaj Linux System Rescue - np. po wyświetleniu "boot:" możemy wpisać "mhdd" nacisnąć "ENTER" i uruchomić go, ma on też wiele innych przydatnych funkcji). W Linuxie można wykonać kopię zarówno dowolnemu urządzeniu na dowolne urządzenia jak i dowolnego urządzenia do pliku. Przy kopiowaniu do pliku należy zamontować partycje ,która obsłuży takie duże pliki. (Montowanie partycji NTFS w Linux System Rescue - np. w punkcie zamontowania "/mnt/windows" to

    Code:
    ntfs-3g /dev/hda1 /mnt/windows
    

    gdzie hda1 - partycja montowana
    /mnt/windows - punkt montowania

    Do utworzenia własnego miejsca "folderu" do zamontowania partycji można użyć polecenia mkdir.
    Code:
    mkdir /mnt/mojapartycja1ntfs


    Komenda do kopiowania dysku do pliku
    Code:
    dd if=/dev/sda of=/mnt/mojapartycja1ntfs/plik.bin
    

    /sda - oznaczenie urządzenia ,któremu wykonujemy kopię


    Komenda do kopiowania dysku w plik skompresowany
    Code:
    - tworzymy "folder"
    

    mkdir /mnt/HDDWinPart2

    - montujemy partycje na ,którą będziemy kopiować plik skompresowany np.

    ntfs-3g /dev/sdb2 /mnt/HDDWinPart2

    - wykonujemy komendę kopiowania

    dd if=/dev/sda | gzip > /mnt/HDDWinPart2/backup.gz

    Gdzie :
    sda - dysk źródłowy
    sdb2 - partycja na dysku gdzie zapisujemy plik obrazka



    Krótki opis filmiku
    - Uruchom DMDE Wyświetli się ekranik wyboru dysku
    - Wybierz dysk któremu będziesz robił kopię
    - Po wyświetleniu ekranu partycji nacisnij ESC lub cancel




    - Następnie wybierz menu Tools opcja Copy sectors to
    - Potem klikamy przycisk partitions i wybieramy cały dysk wpisują się nam LBA od 0 do ostatniego
    - Zaznaczamy file i wskazujemy miejsce gdzie zapisze się plik obrazu.

    Tu film pokazujący jak to zrobić :


    Link


    Przykład programu pod linuxem ddrescue :

    Opis programu na Ubuntu : https://help.ubuntu.com/community/DataRecovery

    UBUNTU dystrybucja sprawdzona np. 12.04 i 13.04

    Co jest potrzebne :
    Plik iso systemu Ubuntu najlepiej pl : http://ubuntu.pl/pobierz.php

    Przykładowe ISO z Ubuntu 13.04 z obsługa USB 3 i botowaniem z USB3 oraz z wszystkim co potrzebne np. tesdisk,TeamViuwer,DMDE for linux i innymi przydatnymi programami jest np. tu : https://www.dropbox.com/s/p5z4baxu4yea8r1/lubuntu-migol.iso

    Program do nagrania ISO na płytkę lub USB np. program do USB Universal-USB-Installer-1.9.3.9 : http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/

    Pu zainstalowaniu i uruchomieniu z CD lub USB należy najlepiej ściągnąć najnowszą wersję ddrescue (Uwaga jest również dd_rescue o którym tu nie mówię)

    Uruchamiamy terminal i wpisujemy :
    Code:
    sudo apt-get update
    
    sudo apt-get install ddrescue


    Teraz opis skrócony komend.
    Pamiętać należy co na co chcemy kopiować oraz, które dyski jak są oznaczone. Sprawdzić to można po przez aplet w Ubuntu "Dyski"

    Cytat:
    ddrescue - Kopia posektorowa.

    ddrescue -f -r 0 /dev/sdb /media/sda1/dysk.img /media/lubuntu/Dane/log.txt

    -f, --force (Z nadpisaniem wymuszonym (zastąpnienie,nadpisanie - partycji dysku pliku itp.))

    -r, --max-retries=<n> (ilość powtórzeń w momencie nieudanej próby odczytu. 0 - czyli ma pomijać, 1 - jeden raz ponowić. itd.)

    /dev/sdb (źródło,skąd - kopia całego dysku (posektorowo))

    /dev/sdb1 (źródło,skąd - kopia całej partycji (posektorowo) w tym przypadku pierwszą - sdb1 lub jeśli drugą będzie sdb2 tak jak to w linuxie określenie dysku czy urządzenia może być dowolne to który dysk jest który możemy podglądać w aplecie "DYSKI".)

    /media/lubuntu/Dane/log.txt (określa miejsce gdzie zapisujemy plik log-u a więc również informacje o BAD sektorach. Ten log jest istotny bo dzięki niemu ddrescue wie od którego miejsca ma ponownie zacząć po restarcie lub, które sektory ma ponowić po ponownym uruchomieniu, dlatego zapisujemy go na USB lub dysku, który będzie dostępny w razie restartu linuxa gdyż miejsce samego linuxa jest w pamięci lub w układzie cdrom.)

    Po pierwszym przebiegu można spróbować ponowić sam odczyt tych sektorów, które się nie skopiowały. podaje się wtedy parametr "r" większy od 1 i wskazuje się plik log.

    np. Dysk do Dysku
    ddrescue -f -r 0 /dev/sdb /dev/sda /media/lubuntu/Dane/log.txt

    i ponowny przebieg

    ddrescue -f -r 1 /dev/sdb /dev/sda /media/lubuntu/Dane/log.txt

    Dysk do pliku

    ddrescue -f -r 0 /dev/sdb /media/lubuntu/Dane/Dysk.img /media/lubuntu/Dane/log.txt

    i ponowny przebieg

    ddrescue -f -r 1 /dev/sdb /media/lubuntu/Dane/Dysk.img /media/lubuntu/Dane/log.txt

    Z pliku img na dysk

    ddrescue -f -r 0 /media/lubuntu/Dane/Dysk.img /dev/sdb /media/lubuntu/Dane/log.txt

    i ponowny przebieg

    ddrescue -f -r 1 /media/lubuntu/Dane/Dysk.img /dev/sdb /media/lubuntu/Dane/log.txt


    Opcje programu po wyświetleniu są takie :

    Code:
    Options:
    
      -h, --help                     display this help and exit
      -V, --version                  output version information and exit
      -a, --min-read-rate=<bytes>    minimum read rate of good areas in bytes/s
      -A, --try-again                mark non-split, non-trimmed blocks as non-tried
      -b, --block-size=<bytes>       sector size of input device [default 512]
      -B, --binary-prefixes          show binary multipliers in numbers [SI]
      -c, --cluster-size=<sectors>   sectors to copy at a time [128]
      -C, --complete-only            do not read new data beyond logfile limits
      -d, --direct                   use direct disc access for input file
      -D, --synchronous              use synchronous writes for output file
      -e, --max-errors=[+]<n>        maximum number of [new] error areas allowed
      -E, --max-error-rate=<bytes>   maximum allowed rate of read errors per second
      -f, --force                    overwrite output device or partition
      -F, --fill=<types>             fill given type blocks with infile data (?*/-+)
      -g, --generate-logfile         generate approximate logfile from partial copy
      -i, --input-position=<bytes>   starting position in input file [0]
      -I, --verify-input-size        verify input file size with size in logfile
      -K, --skip-size=<bytes>        initial size to skip on read error [64 KiB]
      -m, --domain-logfile=<file>    restrict domain to finished blocks in file
      -M, --retrim                   mark all failed blocks as non-trimmed
      -n, --no-split                 do not try to split or retry failed blocks
      -o, --output-position=<bytes>  starting position in output file [ipos]
      -p, --preallocate              preallocate space on disc for output file
      -q, --quiet                    suppress all messages
      -r, --max-retries=<n>          exit after given retries (-1=infinity) [0]
      -R, --reverse                  reverse direction of copy operations
      -s, --max-size=<bytes>         maximum size of input data to be copied
      -S, --sparse                   use sparse writes for output file
      -t, --truncate                 truncate output file to zero size
      -T, --timeout=<interval>       maximum time since last successful read
      -v, --verbose                  be verbose (a 2nd -v gives more)
      -x, --extend-outfile=<bytes>   extend outfile size to be at least this long



    Innym programem jest program dd_rescue i jego opcje sa inne przykład poniżej :

    Code:
    dd_rescue -r -l /media/BACKUP/plikdziennika.log -o /media/BACKUP/badsectory.log -v /dev/sda /dev/sdb
    

    Options: -s ipos start position in input file (default=0),
    -S opos start position in output file (def=ipos),
    -b softbs block size for copy operation (def=65536, 1048576 for -d),
    -B hardbs fallback block size in case of errs (def=4096, 512 for -d),
    -e maxerr exit after maxerr errors (def=0=infinite),
    -m maxxfer maximum amount of data to be transfered (def=0=inf),
    -y syncfrq frequency of fsync calls on outfile (def=512*softbs),
    -l logfile name of a file to log errors and summary to (def=""),
    -o bbfile name of a file to log bad blocks numbers (def=""),
    -r reverse direction copy (def=forward),
    -t truncate output file (def=no),
    -d/D use O_DIRECT for input/output (def=no),
    -k use efficient in-kernel zerocopy splice
    -w abort on Write errors (def=no),
    -a spArse file writing (def=no),
    -A Always write blocks, zeroed if err (def=no),
    -i interactive: ask before overwriting data (def=no),
    -f force: skip some sanity checks (def=no),
    -p preserve: preserve ownership / perms (def=no),
    -q quiet operation,
    -v verbose operation,
    -V display version and exit,
    -h display this help and exit.
    Sizes may be given in units b(=512), k(=1024), M(=1024^2) or G(1024^3) bytes
    This program is useful to rescue data in case of I/O errors, because
    it does not necessarily abort or truncate the output.


    Pierwszym promotorem DMDE w Polsce był okzo https://www.elektroda.pl/rtvforum/viewtopic.php?p=4954076#4954076
    i Nirvanowiec http://www.hddrecovery.pl Miedzy innymi na forum elektroda.pl


    Ewentualne uwagi proszę przesyłać na PW


    Fajne!