Come posso usare DD per migrare i dati da una vecchia unità a una nuova unità?


29

Sto aggiornando il disco rigido SATA interno sul mio laptop da un'unità 40G a un'unità 160G. Ho un desktop Linux / Ubuntu che ha una scheda SATA. Vorrei davvero fare la stessa cosa per un paio di scatole CentOS e FreeBSD al lavoro, e sembra che questo avrebbe la stessa soluzione.

Ho sentito che posso usare DD per eseguire il mirroring della partizione 40G sull'unità 160G o che posso salvare la partizione 40G come immagine sul mio sistema locale e quindi copiare quell'immagine 40G sull'unità 160G.

Qualcuno può descrivere come posso farlo? Ho bisogno di altre utilità, come gparted


3
Ahha ... Questa è la prima domanda !!
Harshit Shrivastava,

2
Domanda numero uno! Sono anche il proponente di questo sito e ho pensato di dare il via al sito con una domanda abbastanza tecnica. Sono stato premiato con una maglietta e un po 'di malloppo.
Stefan Lasiewski,

Risposte:


6

Il tuo primo compito sarebbe quello di connettere entrambi i dischi a un sistema Linux esistente o collegare il nuovo disco al sistema originale.

Devi stare molto attento poiché è molto semplice copiare il disco vuoto sopra il buon disco!

Per finire con i settori di avvio e tutti, dovresti fare qualcosa del tipo:

dd if=/dev/hdx of=/dev/hdy

Dov'è il hdxtuo disco 40G ed hdyè il tuo disco 160G. Noterai che non ci sono numeri di partizione come /dev/hdx1. Questo copia l'intero disco, le informazioni sulla partizione e tutto il resto.

Il tuo nuovo disco sarà come il vecchio disco, 40G allocato. Dovrebbe avviarsi subito quando ricollocato nel tuo laptop. Speri di aver usato LVM? Altrimenti speri di non aver usato tutte le partizioni? Superare questo punto richiede molte più informazioni.

Un'altra soluzione è scaricare ogni singola partizione. Ciò richiede molta più consapevolezza della situazione poiché sarà necessario ricreare le informazioni di avvio.

Tutto questo è meglio usato per clonare i computer, non aggiornare i dischi rigidi. È molto meglio ripristinare in una nuova installazione utilizzando i backup.


17

Normalmente suggerirei una soluzione come "collegare il 2 ° disco rigido utilizzando un enclosure esterno, avviare da un CD Linux, quindi utilizzare un comando come dd if=/dev/sda of=/dev/sdb bs=1G, ma poiché si desidera utilizzare la stessa tecnica per lavoro, ho quello che potrebbe essere una soluzione migliore.

Tutti i miei server e laptop vengono ripresi al lavoro con Clonezilla . Esistono due modi per usarlo ... uno dei quali utilizza un server dedicato ed è probabilmente eccessivo per te, e un altro che utilizza un CD di avvio e un disco rigido esterno.

L'idea è che si avvii con il CD Clonezilla e si disponga di un'unità USB esterna di grandi dimensioni (più grande dell'unità sorgente). Clonezilla ti guida attraverso la creazione di un'immagine dell'unità esistente, dopo di che spegni la macchina, sostituisci l'unità, quindi riavvia Clonezilla e ti guida attraverso il ripristino dei dati.

Questo ti dà la possibilità di A) mettere l'immagine su un disco più grande, e B) conservare un backup dei dati.


5

Mentre puoi usare dd per copiare un disco del genere, farlo presenta una serie di inconvenienti:

  1. La destinazione deve essere esattamente della stessa dimensione o più grande della fonte
  2. Dopo la copia, dovrai ridimensionare le partizioni per utilizzare qualsiasi spazio aggiuntivo
  3. Perderai tempo copiando lo spazio libero
  4. Qualsiasi frammentazione presente nel vecchio disco viene conservata

L'uso di un programma di imaging come Ghost4Linux, partclone o clonezilla si occupa almeno dei numeri 2 e 3. Puoi anche semplicemente formattare il nuovo disco, montarlo e copiare tutti i file con cp -ax(come root), quindi reinstallare il boot loader sulla nuova unità. Questo metodo non presenta nessuno degli inconvenienti sopra indicati.


3

Per copiare semplicemente la partizione, puoi usare dd if=/dev/srcDrive of=/dev/dstDriveo qualcosa del genere. Ti consiglierei di leggere la sua pagina man . Mi dispiace non posso dare molte più informazioni, dal momento che sono al lavoro in questo momento ..


2

Mi hai chiesto come farlo con dd, ma ho avuto più successo nel convogliare l'output di dump in restore . Data la sorgente ad1s1a e la destinazione ad2s1a :

$ mount /dev/ad2s1a /target
$ cd /target
$ dump -0Lauf - /dev/ad1s1a  | restore -rf -

L'ho provato su FreeBSD, in realtà l'ho trovato sul forum di FreeBSD


1

Un semplice esempio è questo:

dd if=/dev/sda of=/dev/sdb

Ma se hai esigenze particolari, dovresti davvero leggere la manpage (man dd) o cercare su Google.

Un'altra idea potrebbe essere l'uso di rsync (non dimenticare di impostare le opzioni giuste, come -az [impacca i file invece di copiare un file dopo l'altro] o --numeric-ids [usa uid / gid invece di nomi come "root"] e forse alcuni altri). Il collegamento contiene molti esempi.

Se il nuovo HDD non ha partizioni, puoi usare gparted o palimpset.

Quando non sei sicuro, formattare l'HDD e quindi sincronizzare i dati con rsync.


1

Bene, ho fatto migrazioni simili a questa avviando con entrambi i dischi collegati e un cd live.

  1. Si ricreano le informazioni sulla partizione del primo disco nel secondo, probabilmente ingrandendo alcune partizioni per utilizzare lo spazio extra e così via.
  2. Supponiamo quindi di avere / dev / sda {1,2,3,4} e di copiarli in / dev / sdb {1,2,3,4}, mkdir / mnt / sd {a, b} {1 , 2,3,4} e monta ciascuna partizione in ogni dir (o se vuoi farlo uno per uno puoi fare una / mnt / origin / mnt / destination e mount / umount ogni coppia)
  3. Quindi fai un cp -avr / mnt / origin /. / mnt / destination / (o un cp -avr / mnt / sda1 /. / mnt / sdb1 /
  4. Aspetta mentre navighi sul web :)
  5. Ricordati di reinstallare grub, lilo o qualsiasi bootmanager che usi.

In questo modo deframmenterai i file man mano che vengono copiati, puoi anche cambiare i filesystem nelle partizioni (migrare da reiserfs o ext3 a ext4, ecc.), Ma per favore, ricorda di modificare / etc / fstab dopo aver copiato per adattarlo la nuova situazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.