utilizzando dd per copiare la partizione in un'altra partizione, mentre si utilizza l'unità fisica


17

Non sono sicuro di come spiegarlo meglio nell'argomento, quindi la "domanda" potrebbe non essere corretta. Ma ecco qui. Ho tre dischi rigidi. L'unità A è un'unità da 320 GB, l'unità B è un'unità da 80 GB e l'unità C è un'unità da 1 TB. Ho copiato i dati dall'unità da 80 GB sull'unità da 1 TB e ridimensionerò la partizione (in modo da poter copiare i dati dall'unità da 320 GB sul successivo).

La mia domanda è questa: se eseguo l'avvio nel sistema operativo sull'unità da 1 TB, posso utilizzare dd per copiare l'unità da 320 GB su un'altra partizione su tale unità fisica? So che non dovrei copiare una partizione live (il che significa che non potrei copiare i dati dall'unità da 320 GB se eseguo quel sistema operativo).

Il mio ragionamento è questo: ho provato ad usare Acronis TrueImage, Partition Manager e Image 4 DOS / Linux (entrambe le applicazioni) e ci sarebbe voluta più di una settimana per copiare i dati. Ciò significa che per una settimana non sono in grado di utilizzare il computer, il che non è accettabile (a meno che non sia la mia unica opzione). Spero che funzioni, quindi posso almeno usare il computer mentre sto facendo la copia.

Se necessario, posso avviare un Live CD (non proprio un'opzione preferita) o utilizzare "Drive B", ma vorrei rimuovere tale unità il prima possibile.


Certo, perché no ?
Michael Hampton,

Risposte:


17

Sì, quello che vuoi fare funzionerà bene, dato che le seguenti due condizioni sono vere:

  1. Non esiste un filesystem (montato) sulla partizione che si sta eseguendo a .
  2. La partizione che si sta dd'ing per almeno le stesse dimensioni di quello che si sta dd'ing da (vale a dire 320 GB).

Il motivo per cui funzionerà correttamente è che le partizioni sono solo file in UNIX. Il loro contenuto ha un significato speciale solo se contiene un filesystem montato.

Supponendo che tu abbia un layout simile al seguente:

1 TB = sda, due partizioni, sda1 da cui è stato avviato e sda2 da cui si sta eseguendo

320 GB = sdb, una partizione, sdb1 da cui stai eseguendo

Il tuo comando sarebbe simile al seguente:

dd if=/dev/sdb1 of=/dev/sda2 bs=1M

Il bs=1Mparametro è lì per garantire che dd copi i dati in grossi blocchi invece di emettere una richiesta per ciascun settore.


1
if = source of = destination penso che ci sia qualcosa di sbagliato nel consiglio sopra.

Nell'esempio sopra, sdb1 è l'origine e sda2 è la destinazione. Ho modificato la risposta per essere più chiaro al riguardo.
Michael Fenn,

1
Non è necessario eseguire resize2fsdopo la copia? Anche quando le dimensioni sono diverse?
Sopalajo de Arrierez,

5

In generale, va bene per qualsiasi partizione mentre non è montata. Se devi montare la partizione di origine per la lettura mentre il dd è in esecuzione, sarebbe meglio montarla in lettura solo con il parametro -o ro.

se si desidera avviare prima nella partizione di origine e quindi utilizzare dd per copiarlo, è possibile eseguire mount -o ro, rimontare / per farlo leggere solo dopo l'avvio.


Sola lettura non significa che il filesystem non stia scherzando con il journal o riorganizzando lo spazio libero o altro.
vonbrand,

@vonbrand potresti fornire un esempio di implementazione del filesystem linux che lo fa in modalità RO?
Basilevs,

@vonbrand file system In UNIX, essendo montati loc molto fa medio che nessuna scrittura dovrebbe essere rilasciato al dispositivo sottostante.
Michael Fenn,
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.