Snažil jsem se přimět CUDA, aby na mém systému fungovala, a v procesu zahrávání si s ovladači nvidia jsem rozbil ubuntu natolik, že jsem musel několikrát přeformátovat oddíl disku. Tou tyčí jsem byl zasažen tolikrát, že se pokouším zálohovat svůj oddíl, jakmile jsem nainstaloval všechny své nástroje a programy a věci pomocí dd (jak mi doporučil přítel).
Nicméně, když jsem běžel
sudo dd if=/dev/sda4 of=~/backup.img
Nakonec jsem dostal chybu, že na mém disku došlo místo. To mi bylo divné, protože oddíl je poměrně velký a mám na něm jen čerstvou instalaci ubuntu spolu s několika (malými) programy.
Usoudil jsem, že se to mohlo stát, že se rekurzivně pokoušel zapsat kopii toho, co již napsal, a tak jsem místo toho zkusil zapsat soubor přímo do jiného oddílu:
sudo dd if=/dev/sda4 of=/media/Ye\ Olde\ Data/ubuntu\ reinstall\ backup/backup.img
To však trvalo věčnost a proces jsem přerušil, jakmile soubor dosáhl velikosti, o které jsem si byl docela jistý, že je příliš velký na to, aby obsahoval pouze data, která jsem chtěl.
Co se děje? Je to tak, že /media má připojené další oddíly, a proto považuje ostatní oddíly za součást /dev/sda4? Je to tak, že dd zkopíruje celý oddíl bajt po bajtu a ignoruje, jaké bajty ve skutečnosti obsahují soubory?
A v každém případě, jak mohu správně dělat to, o co se snažím?
Jo a tady jsou informace o mém disku, kdyby na tom záleželo:
sudo sfdisk -l /dev/sda
Disk /dev/sda: 62260 cylinders, 255 heads, 63 sectors/track
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sda1 * 0+ 12- 13- 102400 7 HPFS/NTFS/exFAT
/dev/sda2 12+ 14602- 14590- 117187500 7 HPFS/NTFS/exFAT
/dev/sda3 29192+ 62260- 33069- 265622493+ 5 Extended
/dev/sda4 14602+ 29191- 14590- 117193728 83 Linux
/dev/sda5 61228+ 62260- 1032- 8287232 82 Linux swap / Solaris
/dev/sda6 29192+ 61227 32036- 257329138+ 7 HPFS/NTFS/exFAT
Přijatá odpověď:
Pokud zkopírujete oddíl pomocí dd
, bude výstupní soubor stejně velký jako oddíl. dd
vytvoří fyzickou kopii disku, nezná prázdné nebo použité místo.
Pokud zkomprimujete výsledný soubor, ušetříte spoustu místa, protože prázdné místo se zkomprimuje velmi dobře (pozor, výpočetně to bude velmi těžký). Můžete dokonce komprimovat výstup dd
za běhu s něčím na řádku dd if=/dev/sdaX | gzip -c > compressed_file.gz
.
opravdu důležité:
Navíc nemůžete (nikdy) neprovádějte
dd
na živém (připojeném)
oddílu budou zaznamenaná data zcela nekonzistentní a
absolutně nepoužitelná pro zálohování. Přemýšlejte o tom:bloky dat jsou
neustále alokovány, přesouvány a mazány; je jako fotografování
s dlouhou dobou expozice na pohybující se cíl.Chcete-li zkopírovat oddíl pomocí
dd
musíte zavést systém z jiného –
live USB nebo cokoli jiného.
Co bych udělal, abych problém vyřešil (všimněte si, pouze obecné pokyny, protože musíte vědět, co děláte)
Související:Více účtů Dropbox na stejném počítači?První možnost kupte si Norton Ghost nebo prozkoumejte možnosti opensource:partimage a clonezilla (sám jsem nikdy netestoval).
Druhá možnost udělejte to ručně:
-
vytvořte další oddíl pro zálohy, nazvěte jej /dev/sdX (nebo použijte společný datový oddíl, cokoliv).
-
zálohovat:
- zavedení pomocí živého USB
- připojte skutečný kořenový oddíl do /real
- připojte další oddíl do /extra
- proveďte velký tar na řádku
(cd /real && tar cvf /extra/mybck.tar.gz)
-
obnovit
- zavedení pomocí živého USB
- připojte skutečný kořenový oddíl do /real
- připojte další oddíl do /extra
- obnovit na řádku
(cd /real && tar xvpf /extra/mybck.tar.gz)
, dejte si pozor nap
možnost zachovat metadata - chroot v /real
- aktualizujte grub nebo bootloader, který používáte
Můžete nahradit tar
s vaším preferovaným archivátorem, jen se ujistěte, že bude respektovat vlastnictví/režim souborů. rsync
stojí za prozkoumání.