GNU/Linux >> Znalost Linux >  >> Linux

dd na celý disk, ale nechcete prázdnou část

Ř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:

  1. 35

  2. Použijte 42 nebo prostě:
    52
    vyplnit nepoužité bloky nulou; počkejte, až zcela zaplní systém souborů, pak:
    69

  3. 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.


Linux
  1. Správci systému Linux chtějí vědět:Kam zmizelo místo na disku?

  2. Může být skript spustitelný, ale nečitelný?

  3. Ponechá příkaz Shuf File> File prázdný soubor, ale podobné příkazy ne?

  1. Linux – Nezahazuje `sync + Drop_caches` mezipaměť?

  2. Linux – reference, ale pro Linux?

  3. Skript Bash vypíše příkaz Nenalezen na prázdné řádky

  1. Porovnat adresáře, ale ne obsah souborů?

  2. Linux jak kopírovat, ale nepřepisovat?

  3. Zpomalte kopírování disku/disku