Fórum Root.cz

Hlavní témata => Software => Téma založeno: nuxnoob 07. 02. 2020, 08:11:37

Název: Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: nuxnoob 07. 02. 2020, 08:11:37
Nazdar linuxáci,

ve vlákně vedle řeším průšvih, kdy mi výpadek elektřiny poškodil XFS. Už jste mi poradili jako to opravit. Před samotnou opravou by mělo být rozumné si ten poškozený disk nějak zazálohovat. Prosím o rady krok za krokem jak na to?

Moje představa by vypadala nějak takto:


Neřešil jste prosím v minulosti něco podobného? Nemáte někdo prosím nějaký ověřený návod, jak zařídit co potřebuji?

Nikdy jsem nic takového nedělal, potřeboval bych konkrétnější kuchařku, jak třeba najdu ten první disk? Že by pomocí "lsblk", ale jak poznám, který je ten nový a který ten starý :-D A zkrátka podtřebuji všechny takový věci, které se v teorii neřeší, ale v praxi je budu potřebovat. Na co si dát pozor apod. Už mám tip neprohodit cíl se zdrojem při kopírování původního disku s rozbitým XFS. :-)

Děkuji za záchranu, jakmile to dám do kupy, slibuji, že ihned přidám do zálohovacího procesu. Kdybych věděl, že XFS je takhle náročný na výpadky proudu, tak neváhám ani minutu. :-)
Název: Re:Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: Petr Blahos 07. 02. 2020, 12:47:49
Takže:

1. Nedávno jsem použil na naklonování disku systemrescuecd. Dá se nabootovat a provozovat z flashky a má X a má gparted.
2. V počítači máš jen ten "poškozený" disk. Spusť gparted a podívej se na něj. Uvidíš, přesnou velikost a partitiony.
3. Pak tam připoj ještě ten nový, zase spusť gparted, teď tam uvidíš 2 disky. Dokážeš je rozeznat, nebo jsou úplně stejné?
4.a. Dokážeš je rozeznat, tak si zapiš, který je ten starý (např. /dev/sda) a který je ten nový (např. /dev/sdb).
4.b. Nedokážeš je rozeznat: Já bych postupoval úplně tupě - odpojil starý a připojil jen ten nový. Na něm bych si udělal v gparted jakoukoliv partitionu malé velikosti - jen na to, abych v gpartedu poznal, který je který. Teď už je rozeznat dokážeš. Znovu připoj ten starý disk. Tak si zapiš, který je ten starý (např. /dev/sda) a který je ten nový (např. /dev/sdb)
5. dd if=/dev/sda of=/dev/sdb
6. Čekej.
7. Teď máš na /dev/sdb přesnou kopii /dev/sda.

4.b.: Je to tupé, ale jednoduché. Předpokládám, že někdo poradí, jak se podívat na sériové číslo disku, a pak to půjde bez toho mrcasení s partitionou.

(Pozn: Určitě chápeš, že všechna ta připojení a odpojení při vypnutém počítači :-)
Název: Re:Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: Zdenek Henek 07. 02. 2020, 14:12:23
Na klonovani disku se mi osvedcila clonezilla.

https://clonezilla.org/
Název: Re:Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: Fiber 07. 02. 2020, 18:03:33
Clonezilla je super. Používám pro hromadné klonování disků, lze klonovat i přes síť.
Název: Re:Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: k3dAR 07. 02. 2020, 18:54:51
Disk na Disk se zobrazenim prubehu(status=progress), vetsi nez vychozi velikost bloku(bs=1M), doplneni bloku nulama kdyz by pri cteni byl error(conf=sync)
Kód: [Vybrat]
dd if=/dev/sdX of=/dev/sdY status=progress bs=1M conv=sync
Disk do Image je to same, ale of=/adresar/kam/image.dd

K tomu co psal "Petr Blahos" je potreba si uvedomit, ze pri pripojeni/odpojeni disku se v zavisosti na poradi sata portu muze oznaceni
disku menit, tedy to ze v jednom startu vidim ze Disk1 ma oznaceni sda a pripojim Disk2 NEznamena ze Disk1 bude stale sda, tedy to zjisteni ktere sdX je dany disk je potreba delat pred kopirovanim v tom danem nastartovanem Live sezeni...

pomoci lsblk zobrazeni i vyrobce, modelu, serial
Kód: [Vybrat]
lsblk -o NAME,SIZE,VENDOR,MODEL,SERIAL,TYPE
EDIT: Jinak Clonezilla samozrejme je take (ktere roky pouzivam) reseni, ale v tomto pripade jen pro Disk na Disk, protoze Disk 2 Image by nebyl pripojitelny pro potreby zkousky oprav filesystemu, a i ten Disk na Disk by bylo potreba vybrat v Clonezilla NEvychozi rezim kopirovani DD, protoze vychozi partclone by mohl narazit na to ze kopiruje nesurove jen pouzite misto a to v pripade naboreneho filesystemu neni ok...
Název: Re:Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: BobTheBuilder 08. 02. 2020, 07:39:28
Pro kopírování disků v nejistém stavu se dá použít ddrescue. Lepší, než si pamatovat řadu parametrů dd, a snaží se u vadných sektorů trochu víc (opakuje s menší velikosti bloku).
Název: Re:Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: leten 08. 02. 2020, 11:04:44
Na klonování celého disku jde použít i příkaz cat /dev/sda > /dev/sdb

Nevýhoda je, že není vidět, kolik procent je hotovo.

Přesný syntax z hlavy nevím, ale google určitě pomůže  :)
Název: Re:Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: _Jenda 08. 02. 2020, 15:47:30
Nevýhoda je, že není vidět, kolik procent je hotovo.
Stejně jako u všech ostatních příkazů pracujícími se soubory to je vidět v /proc. Nejdřív ls -l /proc/pid/fd zjistí, který file descriptor to je, a pak je v /proc/pid/fdinfo/číslo vidět aktuální pozice.

Protože je opruz tohle dělat ručně, existuje program progress, který to udělá automaticky a zobrazí průběhy všech programů (cat, cp, mv, gzip, rsync…), ke kterým má aktuální uživatel přístup. Doporučuji nastavit si desktopové prostředí tak, aby se spouštěl periodicky, a pokud se něco objeví, ukázal se vám někde na obrazovce nenápadný progress bar.
Název: Re:Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: Aleš Janda 10. 02. 2020, 09:03:19
Na klonování celého disku jde použít i příkaz cat /dev/sda > /dev/sdb

Nevýhoda je, že není vidět, kolik procent je hotovo.

Stačí místo cat použít pv – to je jako cat, jen s ukazatelem průběhu (a pokud zná celkovou velikost, což v tomto případě zná, tak i procent a zbývajícího času).

Kód: [Vybrat]
pv /dev/sda > /dev/sdb
Název: Re:Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: Mirek Prýmek 10. 02. 2020, 10:13:13
3. Pak tam připoj ještě ten nový, zase spusť gparted, teď tam uvidíš 2 disky. Dokážeš je rozeznat, nebo jsou úplně stejné?
4.a. Dokážeš je rozeznat, tak si zapiš, který je ten starý (např. /dev/sda) a který je ten nový (např. /dev/sdb).
4.b. Nedokážeš je rozeznat: Já bych postupoval úplně tupě - odpojil starý a připojil jen ten nový. Na něm bych si udělal v gparted jakoukoliv partitionu malé velikosti - jen na to, abych v gpartedu poznal, který je který. Teď už je rozeznat dokážeš. Znovu připoj ten starý disk. Tak si zapiš, který je ten starý (např. /dev/sda) a který je ten nový (např. /dev/sdb)

[...]

(Pozn: Určitě chápeš, že všechna ta připojení a odpojení při vypnutém počítači :-)
Tohle je zbyečně složitý a zdlouhavý postup (kvůli těm rebootům). Daleko snazší je:

Kód: [Vybrat]
smartctl -a /dev/sda
smartctl -a /dev/sdb
- zajímá tě tohle:

Citace
=== START OF INFORMATION SECTION ===
Device Model:     MB1000GCEEK
Serial Number:    WDAU36035460
Buď jsou ty disky od jiného výrobce, pak stačí Device Model, nebo jsou stejné a pak se rozliší podle Serial Number. Oboje bývá natištěné na nálepce, takže je jde rozlišit i fyzicky.
Název: Re:Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: Peter Fodrek 12. 02. 2020, 18:10:18
Disk na Disk se zobrazenim prubehu(status=progress), vetsi nez vychozi velikost bloku(bs=1M), doplneni bloku nulama kdyz by pri cteni byl error(conf=sync)

Je nejaký rozdiel medzi týmto a použitím  ddrescue ? Mám  disk, čo  neskopírujrm ani ddrescue, toto by ale mohlo pomôcť
Název: Re:Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: Mirek Prýmek 12. 02. 2020, 18:28:09
Je nejaký rozdiel medzi týmto a použitím  ddrescue ? Mám  disk, čo  neskopírujrm ani ddrescue, toto by ale mohlo pomôcť
Především tam k3dARovi chybi "noerror", bez něj to nefunguje tak, jak píše (viz https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html)

"neskopírujrm ani ddrescue" je tak vágní popis problému, že ti asi těžko někdo řekne, jestli ho ddrescue umí řešit nebo ne. Zkopírovat ti to nemusí jít třeba proto, že disk nemáš k počítači připojený :) Ne, tenhle problém ani ddrescue nevyřeší :)
Název: Re:Jak zkopírovat celý disk na jiný disk (např. pomocí dd)?
Přispěvatel: BobTheBuilder 12. 02. 2020, 20:09:54
Disk na Disk se zobrazenim prubehu(status=progress), vetsi nez vychozi velikost bloku(bs=1M), doplneni bloku nulama kdyz by pri cteni byl error(conf=sync)

Je nejaký rozdiel medzi týmto a použitím  ddrescue ? Mám  disk, čo  neskopírujrm ani ddrescue, toto by ale mohlo pomôcť
Když ten disk nezkopíruje ddrescue, tak nejspíš ani dd s jakýmikoliv parametry.
Může na tom disku být natolik poškozené místo, že při přístupu na ně disk přestane komunikovat - to je pak špatné a řešení (pokud vůbec existuje) není triviální.