Portál AbcLinuxu, 7. května 2025 01:24
cd /sambamountpoint; dd if=/dev/hda | bzip2 -zkv9 | split -b 2000000000
Výsledné soubory se přepálí na (2) DVD.
S tím bych si uměl poradit, kontrola md5 proběhla taktéž ok (výstup z cat x* | bzip2 -dkv | md5sum
souhlasí s výstupem z dd=/dev/hda | md5sum
).
Pak mě ale napadlo, že nevím, jakým způsobem tu zálohu vysypat zpátky na HDD. Příkaz cat x* | bzip -d | dd of=/dev/hda
půjde použít pouze za předpokladu, že budu mít k dispozici nějaký disk, na který budu moct nahrát obsah těch záložních DVD. Ale já už teď vím, že žádný takový disk k dispozici nebude. Budu mít v rukou jen ta záložní DVD s rozřezaným bzip archivem a v notebooku HDD, který potřebuju obnovit. Ideální by bylo, kdyby bzip2 (případně gzip) uměly solid archives, pak by se ty záložní soubory mohly nahrát na HDD pěkně jedno po druhém pomocí dd s příslušně nastaveným seekem na of. Ale v manpages bzip2 ani gzip jsem takovouto možnost nenašel. Existuje nějaké řešení?
export quit=no while [ $quit != quit ]; do dd if=/dev/dvd ibs=2M; eject; read quit; done |\ bzip2 -dc | dd of=/dev/hda obs=2M
dd
by chtel vymenit za neco jako mount /mnt/cdrom; dd if=/mnt/cdrom/soubor_se_zalohou bs=2M; umount /mnt/cdrom
, pripadne jsou li soubory pojmenovane ruzne, tak bud je nejak pocitat (soubor_se_zalohou1, 2, ...) nebo k zadani jmena souboru zneuzit tu promennou quit.
tar c | bzip
. Sice zálohuje obsah filesystému a ne celou partition, ale to už dnes vidím spíš jako výhodu
.Tak jsem se nechal inspirovat dustinovým příspěvkem (díky za nakopnutí) a použil multivolume tar archive. Nejdřív jsem musel rezignovat na představu, že mi tar bude balit data, která mu přicházejí rourou od dd (jak jsem popsal výše). Využil jsem toho, že na samba disku bylo dost místa, a použil jsem už uloženou zabzipovanou a rozřezanou image (řekněme, že jde o soubory image.bz2aa
, image.bz2ab
a image.bz2ac
. K obalení tarem pak posloužil příkaz:
tar -cML2048000 -f archive1.tar i*
(pozor, hodnota "L" se udává v kiB!)
Po dosažení stanovené velikosti tar vyzve k přípravě cílového média (původně zamýšleno pro zálohování na pásku, takže bylo zapotřebí vyměnit pásku v mechanice) a zmáčknutí Enteru. Na stránkách gnu.org, na které mě odkázal dustin, je popsáno několik možností, jak na tuto výzvu taru reagovat (je např. možné vyvolat subshell). Mě se hodila volba n
, která umožňuje zvolit jiné jméno souboru, do kterého se bude další část archivu ukládat (nebylo třeba přesouvat právě vytvořený archive1.tar na samba disku do jiného adresáře:
n archive2.tar [Enter]
n archive3.tar [Enter]
První dva soubory jsem vypálil na jedno DVD, třetí soubor na druhé DVD (je to trošku krkolomé, ale nechtělo se mi laborovat s ukládáním souboru o velikosti > 2GB).
Fukčnost jsem ověřil pomocí:
tar -xMOf archive1.tar | bzip2 -dk | md5sum
Při výzvě k přípravě dalšího svazku opět použiji příkaz n
:
n archive2.tar [Enter]
n archive3.tar [Enter]
Po nahrání druhé části archivu samozřejmě navíc vyměním DVD. Checksum sedí.
Ve finále by samozřejmě obnova disku měla vypadat takto:
tar -xMOf archive1.tar | bzip2 -dk | dd of=/dev/hda
- což však nebudu zbytečně zkoušet , zatím to jede. I když jsem si pomocí md5sum ověřil, že bzip tímhle způsobem umí image korektně rozbalit, tj. nevadí mu čekání na vstupu při přerušení toku dat při výměně médií, nejsem si jist, zda něco takového nebude vadit programu dd a nezačne se třeba chovat nějak nepředvídatelně (nebo jen nepředvídaně?
). To ale ověřím až při případné ostré akci.
Mondorescue a další programy jsem nepoužil hlavně kvůli tomu, že jsem je nenašel ve Slaxu, což je jediná live distribuce, kterou aspoň trošku znám (a mám vypálenou). Teda pokud nepočítám Knoppix, ale ntb má 512MB RAM, takže tam Knoppix nepůjde do RAM vybalit.
Stejně mě ale trošku mrzí, že tar neumí vytvořit balík ze streamu, už by mu snad nic nechybělo k dokonalosti, budu muset mrknout, jestli autoři nemají někde wishlist.
A co na tom bylo asi úplně nejtěžší? Asi pořádně přečíst man tar
, aby člověk nepřehlédl přepínač -O
. A proto RTFM!
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.