Řešení 1:
V den, kdy jsem narazil na podobný problém s vestavěnými linuxovými distribucemi – před komprimací obrazu se zbavte veškerého odpadu.
02
. Počkejte, až zemře. Smazat asdf.txt.
Právě jste zapsali nuly do veškerého volného místa v zařízení.
Nyní vezměte obraz disku a spusťte jej pomocí gzip. Voila, řídký obrázek.
Pravděpodobně se neškáluje příliš dobře a může způsobit problémy, pokud skutečně potřebujete zapisovat na disk, ale hej.
Můžete pořídit snímek disku rsync na jiný svazek, vynulovat jej, a poté pořídit obraz disku.
Poznámka:Může být nebezpečné pro SSD, uživatel by měl tuto operaci zvážit před provedením.
Řešení 2:
Za předpokladu, že chcete uložit 10
do 23
a vy jste root:
-
35
-
Použijte
42
nebo prostě:
52
vyplnit nepoužité bloky nulou; počkejte, až zcela zaplní systém souborů, pak:
69
-
Vezměte obrázek pomocí dd a použijte conv=sparse k vyražení nul za běhu:
77
Pokud chcete použít kompresi, nemusíte vyrážet nuly pomocí dd, protože nulové bloky jsou vysoce komprimovatelné:
dd if=/dev/sdxn | gz -c | dd of=/tgtfs/image.raw
PS:Měli byste si uvědomit, že toto (vyplnění systému souborů nulami) na paměťové médium založené na flash paměti (tj. váš zdrojový souborový systém je SSD) není dobrý nápad pravidelně, protože to způsobí rozsáhlé zápisy. k vašemu SSD a snížit jeho životnost. (ale to je v pořádku pro příležitostný přenos dat)
Řešení 3:
Použijte dd s možností počítání.
Ve vašem případě jste používali fdisk, takže budu mít tento přístup. Váš "sudo fdisk -l "vytvořil:
Disk /dev/sda: 64.0 GB, 64023257088 bytes
255 heads, 63 sectors/track, 7783 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000e4b5
Device Boot Start End Blocks Id System
/dev/sda1 * 1 27 209920 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 27 525 4000768 5 Extended
Partition 2 does not end on cylinder boundary.
/dev/sda5 27 353 2621440 83 Linux
/dev/sda6 353 405 416768 83 Linux
/dev/sda7 405 490 675840 83 Linux
/dev/sda8 490 525 282624 83 Linux
Dvě věci, které byste měli vzít na vědomí, jsou 1) velikost jednotky a 2) sloupec "Konec". Ve vašem případě máte cylindry, které se rovnají 8225280 Bytům. Ve sloupci "Konec" sda8 končí na 525 (což je 525[jednotek]*16065*512 =~4,3 GB)
dd umí spoustu věcí, jako je spuštění po offsetu nebo zastavení po určitém počtu bloků. To druhé provedeme pomocí volby count v dd. Příkaz by vypadal následovně:
sudo dd if=/dev/sda of=/your_directory/image_name.iso bs=8225280 count=526
Kde -bs je velikost bloku (nejjednodušší je použít jednotku, kterou používá fdisk, ale bude to dělat každá jednotka, pokud je v těchto jednotkách deklarována volba count), a count je počet jednotek, které chceme zkopírovat (poznámka že zvýšíme počet o 1, abychom zachytili poslední blok).
Řešení 4:
Zatímco 82
uvolněte volné místo na disku a použijte 96
/109
je možné, na velkých discích s prázdným prostorem po 100 s GB, 111
ing je bolestně pomalý - nemluvě o tom, jak poznamenaly další odpovědi, 128
vložení SDD do EOF.
Když jsem se dostal do této situace, udělal jsem toto:
-
Na živém CD lubuntu použito
131
'zmenšit' disk na minimální možnou velikost, přičemž zbytek místa zůstane nepřidělený -
Použitý
148
vytvořit rychle komprimovaný obraz (netřeba říkat, že možná budete chtít komprimaci přeskočit, pokud máte dostatek místa pro uložení nezpracovaných dat (nebo jinak chcete snížit zatížení procesoru) - Použito
159
zkopírovat data zpět na jiný disk - Použito
164
znovu k 'rozbalení' oddílu
Nezkoušel jsem to pro více oddílů, ale věřím, že výše uvedený proces lze upravit tak, aby kopíroval „oddíly“, pokud je nejprve vytvořena tabulka oddílů na cílovém disku a pouze data obsažená v oddílu jsou zkopírována přes 172 - offsety čtení/zápisu (
181
/190
možnost 204
, v daném pořadí) bude vyžadováno podle potřeby.
Řešení 5:
Nemůžeš. 213
je nástroj na velmi nízké úrovni a nemá žádné prostředky k rozlišení mezi soubory a prázdným místem.
Na druhou stranu se prázdný prostor velmi, velmi pěkně zkomprimuje, takže pokud vám jde pouze o úložný prostor, ne například o čas zápisu, pak to jednoduše protáhněte přes gzip.