Linux -vastine Norton/Symantec Ghostille ?
Esitän tässä yhden oman ideani, onko0 kukaan kokeillut tätä käytännössä, jos niin toimiiko ?
Esimerkkinä hda3:n varmuuskopionti ja palautus
huom1: varmuuskopioitaessa hda3 ei saa olla mountattuna r/w, eli joko umounttaa se tai mountaa vain read only -tilassa.
huom2: Palautettaessa hda3 ei saa olla mountattuna ollenkaan.
1. Varmuuskopiointi:
1a. dd if=/dev/hda3 of=backup.bin bs=512
1b. fdisk -l /dev/hda | grep hda3 >backup.part_desc.txt
2. Palautus:
2a. dd if=backup.bin of=/dev/hda3 bs=512
2b. fdisk -l /dev/hda | grep hda3
2c. cat backup.part_desc.txt
JOS 2b ja 2c näyttävät, että hda3 alkaa täsmälleen samasta kohdasta levyllä kuin varmuuskopiointihetkellä, palautus on nyt valmis, buuttaa kone ja käytä.
JOS 2b ja 2c näyttävät, että hda3 EI ala täsmälleen samasta kohdasta levyllä kuin varmuuskopiointihetkellä, ovat seuraavat lisätoimenpiteet tarpeen:
FAT16 ja FAT32 -tiedostojärjestelmissä:
katso esim sivua:
http://ata-atapi.com/hiwdos.htm
osion ensimmäisen levysektorin (=512 tavua) kuvaus löytyy em. sivulta otsikolla "The BPB and other data areas".
Nyt on levyeditorilla etsittävä tuosta sektorista kohta "dd numHiddenSectors 7c1c 4 00000000" ja lisättävä ko. 32-bittistä etumerkitöntä kokonaislukua arvolla, joka ilmaisee, montako levysektoria hda3 on liikkunut eteenpäin varmuuskopiointihetken tilanteeseen verrattuna.
Siis jos hda3 on liikkunut taaksepäin, niin lisätään negatiivinen arvo tai vähennetään ko. arvon itseisarvo.
Entä NTFS -osiot?
Jos niissä on samanlainen BPB (BIOS Parameter Block) kuin FAT16 ja FAT32 -osioilla,sama ohje ilmeisesti (?) pätee myös niihin.
Jos ei, mistä tietoa, miten NTFS -osio oikeaoppisesti palautetaan ?
ja lopuksi: entä linuxin tyypillisesti käyttämät ext2 ja ext3 -tiedostojärjestelmät?
Alkavatko myös sellaisen sisältävät osiot tuolla BPB:llä, ja jos ei, niin miten linuxissa sama asia hoidetaan ?
Jos et ennestään tunne kiintolevyosioiden broblematiikkaa bittitasolla, tässä lyhyt selitys:
Kun käyttöjärjestelmä on käynnissä, tuolla em. numHiddenSectors -arvolla ei periaatteessa ole suurempaa merkitystä, mutta jotkut käyttöjärjestelmät ja apuohjelmat saattavat silti tarkistaa tuon oikeellisuuden ja valittaa virheestä, jos arvo ei ole loogisesti oikein.
Sensijaan buuttausvaiheessa tuolla arvolla on erittäin tärkeä merkitys:
Jos MBR:ssä (Master Boot Record; kiintolevyn ensimmäisessäsektorissa, LBA=0) on jonkin MS -käyttöjärjestelmän sinne kirjoittama buuttikoodi, se relokatoi itsensä ja lataa aktiivisen osion 1. sektorin itsensä alkuperäiseen paikkaan ja hyppää ko. sektorin 1. tavuun, jos ns. signature (55 AA) on oikein.
Mutta ko. sektorin konekielikoodi on sekin vain 512 tavun mittainen sisältäen em. BPB:n koon.
Koska varsinaista käyttöjärjestelmää ei vieläole ladattu, konekielikoodi on täysin omillaan, ja koska 512 tavuun ei paljoa mahdu, koodin täytyy tietää, mistä ladataan jatkoa, ja tässä em. numHiddenSectors arvolla on tärkeä merkitys: se ilmaisee, montako sektoria koko kiintolevyllä on ennen ko. osion buuttisektoria.
tuolla sivulla:
http://ata-atapi.com/hiwdos.htm
esimerkkinä oleva sektori on *levykkeeltä*, ja koska levykkeillä ei ole MBR:ää, vaan osio on sama asia kuin koko levyke, tuo arvo on siksi nolla, koska ennen ko. sektoria ei ole yhtään muuta sektoria.
Kommentteja ja täsmennyksiä ?
Esitän tässä yhden oman ideani, onko0 kukaan kokeillut tätä käytännössä, jos niin toimiiko ?
Esimerkkinä hda3:n varmuuskopionti ja palautus
huom1: varmuuskopioitaessa hda3 ei saa olla mountattuna r/w, eli joko umounttaa se tai mountaa vain read only -tilassa.
huom2: Palautettaessa hda3 ei saa olla mountattuna ollenkaan.
1. Varmuuskopiointi:
1a. dd if=/dev/hda3 of=backup.bin bs=512
1b. fdisk -l /dev/hda | grep hda3 >backup.part_desc.txt
2. Palautus:
2a. dd if=backup.bin of=/dev/hda3 bs=512
2b. fdisk -l /dev/hda | grep hda3
2c. cat backup.part_desc.txt
JOS 2b ja 2c näyttävät, että hda3 alkaa täsmälleen samasta kohdasta levyllä kuin varmuuskopiointihetkellä, palautus on nyt valmis, buuttaa kone ja käytä.
JOS 2b ja 2c näyttävät, että hda3 EI ala täsmälleen samasta kohdasta levyllä kuin varmuuskopiointihetkellä, ovat seuraavat lisätoimenpiteet tarpeen:
FAT16 ja FAT32 -tiedostojärjestelmissä:
katso esim sivua:
http://ata-atapi.com/hiwdos.htm
osion ensimmäisen levysektorin (=512 tavua) kuvaus löytyy em. sivulta otsikolla "The BPB and other data areas".
Nyt on levyeditorilla etsittävä tuosta sektorista kohta "dd numHiddenSectors 7c1c 4 00000000" ja lisättävä ko. 32-bittistä etumerkitöntä kokonaislukua arvolla, joka ilmaisee, montako levysektoria hda3 on liikkunut eteenpäin varmuuskopiointihetken tilanteeseen verrattuna.
Siis jos hda3 on liikkunut taaksepäin, niin lisätään negatiivinen arvo tai vähennetään ko. arvon itseisarvo.
Entä NTFS -osiot?
Jos niissä on samanlainen BPB (BIOS Parameter Block) kuin FAT16 ja FAT32 -osioilla,sama ohje ilmeisesti (?) pätee myös niihin.
Jos ei, mistä tietoa, miten NTFS -osio oikeaoppisesti palautetaan ?
ja lopuksi: entä linuxin tyypillisesti käyttämät ext2 ja ext3 -tiedostojärjestelmät?
Alkavatko myös sellaisen sisältävät osiot tuolla BPB:llä, ja jos ei, niin miten linuxissa sama asia hoidetaan ?
Jos et ennestään tunne kiintolevyosioiden broblematiikkaa bittitasolla, tässä lyhyt selitys:
Kun käyttöjärjestelmä on käynnissä, tuolla em. numHiddenSectors -arvolla ei periaatteessa ole suurempaa merkitystä, mutta jotkut käyttöjärjestelmät ja apuohjelmat saattavat silti tarkistaa tuon oikeellisuuden ja valittaa virheestä, jos arvo ei ole loogisesti oikein.
Sensijaan buuttausvaiheessa tuolla arvolla on erittäin tärkeä merkitys:
Jos MBR:ssä (Master Boot Record; kiintolevyn ensimmäisessäsektorissa, LBA=0) on jonkin MS -käyttöjärjestelmän sinne kirjoittama buuttikoodi, se relokatoi itsensä ja lataa aktiivisen osion 1. sektorin itsensä alkuperäiseen paikkaan ja hyppää ko. sektorin 1. tavuun, jos ns. signature (55 AA) on oikein.
Mutta ko. sektorin konekielikoodi on sekin vain 512 tavun mittainen sisältäen em. BPB:n koon.
Koska varsinaista käyttöjärjestelmää ei vieläole ladattu, konekielikoodi on täysin omillaan, ja koska 512 tavuun ei paljoa mahdu, koodin täytyy tietää, mistä ladataan jatkoa, ja tässä em. numHiddenSectors arvolla on tärkeä merkitys: se ilmaisee, montako sektoria koko kiintolevyllä on ennen ko. osion buuttisektoria.
tuolla sivulla:
http://ata-atapi.com/hiwdos.htm
esimerkkinä oleva sektori on *levykkeeltä*, ja koska levykkeillä ei ole MBR:ää, vaan osio on sama asia kuin koko levyke, tuo arvo on siksi nolla, koska ennen ko. sektoria ei ole yhtään muuta sektoria.
Kommentteja ja täsmennyksiä ?
Vastaukset 6
Vanhimmat
Asia varmaankin oli oikein mutta helkkarin monimutkaisesti esitetty. Jos todella haluaa varmuuskopioida kiintolevynsä on yksinkertaisin tapa hankkia täsmälleen samanlainen kovo ja kopioida koko levy samointein ikään kuin RAIDin mirrorissa.
dd if=/dev/hda of=/dev/hdb bs=1M
Mulle ei myöskään käytännössä ole tainnut tulla vastaan sellaista tilannetta että osiot olisivat liikkuneet joten tuon esimerkin hda3:n voisi palauttaa suoraan osioon hda3 mikäli sieltä olisivat tiedot kadonneet.
Nykyisten isojen tai oikeastaan valtavien kiintolevyjen aikaan ei välttämättä edes kannata käyttää dd:tä ellei syystä tai toisesta halua täydellistä kopiota jostakin levystä/osiosta, isoilla osioilla on monesti myös paljon tyhjää jota ei kannata kopioida vaan data kannattaa pelkästään pakata(gz,bz2) arkistoon hyödyntämällä tar-komentoa optioineen ja mahdollisesti crontabilla ajastettuna.
Toki jos haluaa tutkia asiaa ja kehittää levynkäsittelytaitoja niin voihan sen monimutkaisestikin tehdä.
EN SUOSITTELE DD:n KÄYTTÖÄ ainakaan ilman perinpohjaista tutustumista manuaaleihin, se on jykevä työkalu joka jyrää surutta datasi jos menet mokaamaan. Tämä tiedoksi uteliaille mutta ei kokeneille käyttäjille, "en kehoita teitä kokeilemaan tätä kotona". Mä lisään nykyään tämän kehoituksen kun puhun dd:stä, sain kerran asiallisia moitteita liian ylenpalttisista dd-ohjeista ilman varoitusta ;D
"Mulle ei myöskään käytännössä ole tainnut tulla vastaan sellaista tilannetta että osiot olisivat liikkuneet joten..."
Eiväthän ne osiot toki itsestään mihinkään liikukaan. Mutta jos puhutaan Norton Ghostin linux -vastineesta, niin esikuvansa tapaan pitää osata käsitellä oikein myös tilanne, jossa osion kokoa ja/tai sijaintia on muutettu esim. fdisk:llä, PartitionMagicilla, Qtpartedillä tai GPartEdillä, tai koko levy on hajonnut ja tilalle ostettu uusi levy, jolle on tehty osiot palautusta varten.
Esittämäni dd -ratkaisu tosin tässä ei ole ihan Norton Ghostin veroinen: jos osion koko on muuttunut, ei dd osaa tehdä asialle mitään järkevää.
Tiedostopohjainen kopiointi vaikuttaisi siis järkevämmältä. Mutta jos varmuuskopioitava kohde on esim Win 98/2000/XP -järjestelmäosio, niin pienikin ero tiedostojärjestelmässä muuttaa osion helposti buuttikelvottomaksi.
Edes Norton Ghost ei selviä tuosta ihan 100%:sti: sillä tehdyn palautuksen jälkeen tyypillisesti windows saattaa antaa outoja ilmoituksia joko siitä, että se haluaa tarkistaa levyosiot tai "uuden laitteen asennus viimeistelty; käynnistä kone uudelleen" jne.
Mainituista muuten ainakin Knoppix 5.1.1:n mukana tulevassa Qtparetedissä on seuraavanlainen bugi:
Jos koneen IDE -kiintolevy on hdb ja optinen asema hda, niin Qtparted ei toimi millään järkevällä tavalla. Tällainen tilanne syntyy uude(hko)ssa PC:ssä helposti:
Emolevyllä vain 1 IDE -liitin, loput SATA -liittimiä.
Koneen (kiinteästi asennettu) SATA -kiintolevy on /dev/sda.
Koneessa IDE -siirtokelkka, johon voidaan varmuuskopioinnin tai palautuksen ajaksi laittaa kasetissa oleva IDE -kiintolevy, muina aikoina IDE -siirtokelkka on tyhjä. Optinen asema (esim. DVD-RW) on IDE -liitännällä.
Koska SLAVEksi asennettu DVD-RW ei varmaankaan toimisi ollessaan yksin IDE -kaapelissa, on ainoa järkevä mahdollisuus asettaa DVD-RW MASTERiksi ja tuo siirtokelkassa oleva IDE -levy SLAVE:ksi.
Onneksi kun MASTER ja SINGLE ovat useimmissa IDE -laitteissa sama asia.
Windows 2000:n osalta jäi epäselväksi, ovatko SATA -ajurit oikein asennettu (koneen BIOS uusi ja osaa toki näyttäää FAT -tyyppiset osiot sata -levyllä myös MS-DOS -tilassa). Laitehallinnassa kun ei lue SATA:sta mitään, ja levyn ohjaimena näkyy Microsoft, versio vuodelta 2000 (?!).
Windows 2000:ssa mitattu lukunopeus levyltä oli 21,45 MiTavua/s , levynä 500 Gt Seagaten SATA -levy Barracuda 7200.10.
Jos muuten joku innostuu kokeilemaan em. Qtpartediä Knoppixilla, niin anna buuttiparametri noswap, muuten osioita ei voi muokata.
"Eiväthän ne osiot toki itsestään mihinkään liikukaan"
Niin no en mä tarkoittanutkaan että jos yksi osio katoaa välistä niin muuta alkavat liukumaan pitkin levyn pintaa kun osion hda3 pintajännite ei pidä osioita paikoillaan ;D ;D ;D
"Mutta jos varmuuskopioitava kohde on esim Win 98/2000/XP -järjestelmäosio, niin pienikin ero tiedostojärjestelmässä muuttaa osion helposti buuttikelvottomaksi"
Ei ole epäonnistunut ainakaan mulla vielä, winkun buuttiosiota (mulla on erillinen c:\ ) olen tiedostomuodossa siirrellyt paikasta toiseen ja levyltä toiselle. Olen myös joutunut kopioimaan koko XP:n levyltä jonka alusta oli n. 1Gt vioittunut (nyrkin iskusta, ei minun nyrkkini) tiedostomuotoisena ja palauttanut sen samalle levylle kun olin osioinut levyn siten että 3Gt levyn alusta oli tyhjää ja tuo XP toimii tänäkin päivänä 1,5 vuotta myöhemmin. Kyseessä oli toki hätäkorjaus kun omistaja "ei halunut" ostaa uutta kovoa suosituksestani huolimatta (hoopoa).
Partimage, mutta on noita vielä muitakin:
http://www.partimage.org/Main_Page
Löytyy myös moniin jakeluihin suoraa paketoituna.
Partimage näyttää olevan oikeastaan jalostettu tar, lähes samat tehtävät voi suorittaa komennolla "tar" sopivat optiot.
Lisäksi jos katsoo Partimagen manuaalia niin sielläkin joudutaan MBR kopioimaan dd:llä manuaalisesti eli Partimage, aivan kuten tar, kopioi vain datan.
Esimerkiksi kompressointi on liki sama, tar ja optiot -z tai -b ajavat saman asian, 1Gt datasta saadaan noin 400Mt pakkaus, tietty riippuu kuinka hyvin data on pakattavissa, kaikki tiedostomuodot kun eivät pakkaudu samalla pakkaussuhteella.
Mutta jokainen tietenkin valitsee itselleen parhaan tavan suorittaa toimenpide.
systeemini
kopiointiin verkkolevylle:
dd if=/dev/hda1 | gzip -c | split -b 2000m - /mnt/verkko/backup.img.gz.
ja palautus:
cat /mnt/verkko/backup.img.gz.* | gzip -dc | dd of=/dev/hda1