Rilasciare un'image dd in più file

Sto facendo un certo recupero di dati da un disco rigido. Il disco ha circa 300GB di dati su di esso, ma mi manca un altro disco rigido che dispone di 300 GB di spazio libero.

Ho tre HD, con 150, 40 e 120 GB liberi.

Per la creazione del primo pezzo, ho pensato di fare quanto segue:

sudo dd if=/dev/sdf1 bs=4096 count=150G | gzip > img1.gz 

Cosa dovrei eseguire sulle altre macchine per "raccogliere where ho lasciato"?

  • Le variables di session non persistono in PHP5 / Apache2 / Ubuntu12
  • Il saldo-rr di linux (modalità bond = 0) funziona con tutti gli interruttori?
  • Ubuntu 8.04 (Hardy): Come installare automaticamente apt-get / aptitude pacchetti di aggiornamento per bug / sicurezza?
  • Esegui lo script da rc.local come utente invece che root
  • Su Ubuntu, where è il posto migliore per mettere un command mount da eseguire all'avvio?
  • Nuovo a Ubuntu Server, che registra per monitorare e cosa fare
  • Limitare saldamente l'accesso a un archivio Debian privato
  • NIC multiple con indirizzo IP statico, problemi di gateway predefiniti
  • 5 Solutions collect form web for “Rilasciare un'image dd in più file”

    Probabilmente si desidera considerare l'utilizzo di tar , come dice KPWINC, ma per rispondere direttamente alla domanda, si desidera utilizzare l'opzione "skip" di dd .

    Se il tuo primo command, come indicato, è:

     sudo dd if=/dev/sdf1 bs=4096 count=150GB | gzip > img1.gz 

    Poi la tua seconda sarebbe:

     sudo dd if=/dev/sdf1 bs=4096 skip=150GB count=40GB | gzip > img2.gz 

    e terzo:

     sudo dd if=/dev/sdf1 bs=4096 skip=190GB count=120GB | gzip > img3.gz 

    Detto questo, non sono sicuro che il suffisso "GB" fa quello che intendi. Penso che faccia solo la math cruda sul numero di root che segue, non capire come get molti gigabyte dalla dimensione del block che hai dato. Vorrei fare qualcosa di simile:

     dd if=/dev/sdf1 bs=`expr 10 * 1024 * 1024` count=`expr 15 * 1024 * 1024 * 1024` 

    solo per essere sicuri della math.

    Oh, e assicurati che il tuo dispositivo non cambia sotto di te mentre lo copi. Sarebbe male.

    Una soluzione semplice potrebbe essere quella di utilizzare "/ usr / bin / split". Basta rompere i file in pezzi. È ansible utilizzare "-" come nome del file di input da leggere dall'ingresso standard. La cosa bella della divisione è che è semplice, non ha alcun effetto sul toolchain in alcun modo reale e puoi "unire" i file semplicemente usando il "gatto" per tornarli insieme (o metterli in un altro app).

    Un paio di cose qui. In primo luogo, il command elencato probabilmente non functionrà come ti aspetti. Sembra che stai cercando di colpire 150GB, ma devi fatturare sia la dimensione del block che il count (contare è il numero di blocchi di dimensione del block). Quindi, se si desidera 150GB, si potrebbe fare bs=1GB count=150 . Potresti poi riprendere where sei partito aggiungendo uno skip=150 per saltare 150 blocchi (ognuno di 1GB) nella seconda esecuzione. Inoltre, per avere gzip submit la propria output a standard, devi passare l'opzione -c .

    Tuttavia, prima di farlo, un paio di altre domande. Stai usando dd qui perché il filesystem è danneggiato / etc e hai bisogno di una copia dell'image a disco bit-for-bit esatta di esso? O stai solo cercando di distriggersre i dati? Uno strumento conoscibile per i filesystem potrebbe essere più efficace. Soprattutto se il file system di origine non è pieno. Le opzioni includono tar, o si potrebbe desiderare di esaminare qualcosa come Clonezilla , Partclone , Partimage o per un'opzione specifica per Windows per accedere direttamente a un file system Windows, Linux NTFS (nota che gli strumenti precedentemente menzionati possono gestire i file system di Windows in vari gradi , pure).

    Se si è impostato sull'operazione sulla partizione con un programma non consapevole di file system, è probabile che l'utilizzo della linea dd (come modificato sopra per essere corretto) funziona. È difficile dire quanto bene comprenderà, ma dovrebbe essere più piccolo del file system originale. Se si dispone dell'accesso in lettura-scrittura al file system originale, vale la pena riempire lo spazio libero con un file scritto da / dev / zero per annullare lo spazio inutilizzato prima di salvarlo con dd. Ciò migliorerà la capacità di gzip di comprimere lo spazio libero nell'image del disco.

    Per operare sul secondo pezzo, basta aggiungere uno skip=XXX bit alla seconda invocazione dd, where 'XXX' è uguale al valore count= valore che hai dato la prima volta. Se voleste fare 150 GB sul tuo primo e 40 sul tuo secondo, puoi fare:

    sudo dd if=/dev/sdf1 bs=1GB count=150 | gzip -c > img1.gz

    seguito da:

    sudo dd if=/dev/sdf1 bs=1GB skip=150 count=40 | gzip -c > img2.gz

    catrame

    I tar potrebbero risolvere il problema. Ha la capacità di rompere i file in più volumi.

    Controlla questo link:

    http://paulbradley.tv/44/

    Dalla pagina:

    Le due opzioni aggiuntive della row di command che è necessario utilizzare oltre la syntax standard sono -M (–multi-volume) che indica Tar che si desidera dividere il file su più dischi di supporti. Devi quindi dire a Tar quanto grande è il supporto, in modo che possa creare file di size corrette. A tal fine, si utilizza l'opzione -tape-length, where il valore passato è x 1024 byte di numero.

    L'esempio seguente mostra la syntax utilizzata. Diciamo che il file largefile.tgz è di 150 Meg e dobbiamo adattare il file su due Zip Zip Zip.

    tar -c -M -tape-length = 102400 -file = disk1.tar largefile.tgz

    Il valore 102400 è 1024 x 100, che creerà un file di 100 Meg chiamato disk1.tar e poi Tar richiede il volume 2 come sotto:

    Preparare il volume # 2 per disk1.tar e premere il button di return:

    Nel tempo delle unità a nastro, avresti preso il primo nastro dalla macchina e inserito un nuovo nastro e premuto il button per continuare. Come vogliamo Tar per creare i rimanenti 50 Meg in un file separato, emeniamo il seguente command: –

    n disk2.tar

    Ciò insegna a Tar per continuare a scrivere i restanti 50 Meg di largefile.tgz in un file denominato disk2.tar. Sarai quindi richiesto con la row sottostante e ora puoi colpire il return per continuare.

    Preparare il volume # 2 per disk2.tar e tornare al return:

    Ripetere questo process fino a quando il file di grandi size è stato completamente elaborato, aumentando il numero di disco nel nome file each volta che viene richiesto.

    Comming in ritardo per la festa, ma ho dovuto fare uno script per eseguire il backup di un file system sconosciuto su un bastone FAT32.

    Questo semplice script funziona per me:

     # Sets pipefail so failed dd makes the whole pipe command fail set -o pipefail dd_result=0 split=0 filenameSplit= while [ $dd_result == 0 ] do cmd="dd if=/dev/sdX bs=2G count=1 skip=$split | pigz --fast > \"2G.$filenameSplit.myharddisk.gz\"" echo $cmd eval $cmd dd_result=$? split=$((split + 1)) filenameSplit=$split done 

    EDIT: Sono stati caricati uno script di base di backup che utilizza la compressione dd, pigz o gzip e divide i file in blocchi che possono essere impostati a commandline. Script trovato qui: github.com/deajan/linuxscripts

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.