Discussione:
clonare con dd da usb 64 Gb a usb 128 Gb
(troppo vecchio per rispondere)
mauro
2019-06-17 18:52:15 UTC
Permalink
Ciao, sto cercando una risposta in rete, qualcosa ho trovato ma forse
non la soluzione ottimale.
Voglio clonare una usb da 64 Gb su una da 128 sfruttando tutto lo spazio
di quest'ultima, e cioè NON lasciando spazio da 64 GB inallocato dopo la
clonazione dei 64 originali, ma prendendomi proprio tutti i 128 di
destinazione.
Ho letto che, banalmente, dopo aver operato con dd per la clonazione,
potrei avviare gparted sempre sulla distribuzione linux di appoggio dove
ho eseguito dd, creare una partizione ext4 sullo spazio rimasto vuoto e
appenderla a quella appena creata (clonata), per ottenerne una sola
partizione di tutto lo spazio nella usb di destinazione.
Mi sta bene, credo sia semplice.
Ma non c'è un modo -possibilmente comprensibile senza arzigogoli da
programmatore- di comandare la clonazione nella stringa dd per occupare
già tutto lo spazio sul volume di destinazione?
Grazie
--
"buon anno...e si fumi una sigaretta"
"no grazie me fanno gira' la testa"
"e va bene, se la fumi dopo i pasti"
"dopo i pasti di chi?"
Joe
2019-06-17 21:41:54 UTC
Permalink
Post by mauro
Ciao, sto cercando una risposta in rete, qualcosa ho trovato ma forse
non la soluzione ottimale.
Voglio clonare una usb da 64 Gb su una da 128 sfruttando tutto lo spazio
di quest'ultima, e cioè NON lasciando spazio da 64 GB inallocato dopo la
clonazione dei 64 originali, ma prendendomi proprio tutti i 128 di
destinazione.
Ho letto che, banalmente, dopo aver operato con dd per la clonazione,
potrei avviare gparted sempre sulla distribuzione linux di appoggio dove
ho eseguito dd, creare una partizione ext4 sullo spazio rimasto vuoto e
appenderla a quella appena creata (clonata), per ottenerne una sola
partizione di tutto lo spazio nella usb di destinazione.
Mi sta bene, credo sia semplice.
Ma non c'è un modo -possibilmente comprensibile senza arzigogoli da
programmatore- di comandare la clonazione nella stringa dd per occupare
già tutto lo spazio sul volume di destinazione?
Grazie
Che io sappia no.
Perchè dd è uno strumento molto semplice, non
sa cosa sia una partizione, lui si limita a:
- leggere dati in ingresso
- e scriverli in uscita

Tu gli dici cosa è l’ingresso, in questo caso
ad esempio /dev/sdd, o come viene vista la tua
ciavetta “sorgente”. E dove scrivere in uscita
i dati che ha letto.

Altrimenti devi lavorare a livello di filesystem:

- sulla chiavetta di destinazione ti crei la
partizione unica, se serve dello stesso tipo
di quella di destinazione, tipo linux se quella
sorgente è in ext4. Per lo scopo puoi usare
fdisk o chi per esso.

- la formatti in ext4 con mkfs.ext4

- poi fai la copia dei dati con:

cp -a /mnt/sorgente/* /mnt/destinazione/

Ovviamente dopo aver montato le due partizioni.


In alternativa potresti anche:

- copiare con dd l’intero file dispositivo
della sorgente, /dev/sdd sulla destinazione
che mettiamo sia /dev/sde:

dd if=/dev/sdd of=/dev/sde

con eventuali altre opzioni per ottimizzare
le prestazioni della velocità di copia, vedi
parametro “bs” di dd.

- poi con parted, ma anche con fdisk volendo
modifichi la tabella delle partizioni sulla
destinazione, eliminando la partizione che
trova e ricreandola avendo l’accortezza di
farla iniziare dove iniziava quella vecchia
e ovviamente farla terminare al limite dei
128 GB.

- a questo punto sulla destinazione avrai una
partizione unica ma contenente un filesystem
di soli 64 GB. Lo puoi allargare con resize2fs,
sempre parlando di ext4.

Se usi parted mi pare che l’ultimo passaggio lo
faccia in automatico, cioè allargando la partizione
estende automaticamente anche il filesystem e lo
fa aderire ai limiti della stessa. Ma sinceramente
non ricordo questo dettaglio, comunque su google
lo trovi facilmente.

Ad ogni modo se non hai particolari motivi per
usare dd, ti consiglio la prima opzione, cioè
copiare i soli dati contenuti nel filesystem
di partenza con “cp -a”. Specialmente se la
partizione sorgente non è piena.

Se invece hai esigenze particolari per usare
dd, allora meglio spiegare un attimo meglio
quali sono.
mauro
2019-06-18 04:59:35 UTC
Permalink
Post by Joe
Post by mauro
Ciao, sto cercando una risposta in rete, qualcosa ho trovato ma forse
non la soluzione ottimale.
Voglio clonare una usb da 64 Gb su una da 128 sfruttando tutto lo spazio
di quest'ultima, e cioè NON lasciando spazio da 64 GB inallocato dopo la
clonazione dei 64 originali, ma prendendomi proprio tutti i 128 di
destinazione.
Ho letto che, banalmente, dopo aver operato con dd per la clonazione,
potrei avviare gparted sempre sulla distribuzione linux di appoggio dove
ho eseguito dd, creare una partizione ext4 sullo spazio rimasto vuoto e
appenderla a quella appena creata (clonata), per ottenerne una sola
partizione di tutto lo spazio nella usb di destinazione.
Mi sta bene, credo sia semplice.
Ma non c'è un modo -possibilmente comprensibile senza arzigogoli da
programmatore- di comandare la clonazione nella stringa dd per occupare
già tutto lo spazio sul volume di destinazione?
Grazie
Che io sappia no.
.................................................
Post by Joe
Se invece hai esigenze particolari per usare
dd, allora meglio spiegare un attimo meglio
quali sono.
grazie per la risposta.

Ho usato dd diverse volte e con soddisfazione, è infallibile per clonare
volumi, e l'ho fatto tra usb identiche, quindi senza altre particolari
esigenze.
Ora ho una distribuzione Ubuntu 18.04 interamente installata su una usb
da 64 Gb, che voglio clonare su una usb da 128, perchè devo lavorare con
più spazio e deve essere quella configurazione, senza impazzire a
ricominciare da capo con una nuova installazione e ricreare le
personalizzazioni.
--
"buon anno...e si fumi una sigaretta"
"no grazie me fanno gira' la testa"
"e va bene, se la fumi dopo i pasti"
"dopo i pasti di chi?"
Joe
2019-06-18 09:11:01 UTC
Permalink
Post by mauro
Post by Joe
Che io sappia no.
.................................................
Post by Joe
Se invece hai esigenze particolari per usare
dd, allora meglio spiegare un attimo meglio
quali sono.
grazie per la risposta.
Ho usato dd diverse volte e con soddisfazione, è infallibile per clonare
volumi, e l'ho fatto tra usb identiche, quindi senza altre particolari
esigenze.
Certo, nel caso di usb identiche non si pone
il problema: tanto leggi tanto copi e via...
Se vogliamo fare i pignoli resta il discorso
della determinazione di quale sia il “bs=”
ottimale per ottenere il risultato nel tempo
minore possibile, che su volumi di una certa
dimensione è da valutare. Però sì, la copia
in ogni caso fila via liscia e la clonazione
è davvero tale.
Post by mauro
Ora ho una distribuzione Ubuntu 18.04 interamente installata su una usb
da 64 Gb, che voglio clonare su una usb da 128, perchè devo lavorare con
più spazio e deve essere quella configurazione, senza impazzire a
ricominciare da capo con una nuova installazione e ricreare le
personalizzazioni.
Ecco, allora non ti basta spostare solo i
dati della partizione sorgente, ma devi
anche ripristinare i settori “iniziali”
clonandoli bit a bit con dd.

In pratica:

- copi il MBR e la tabella delle partizioni
della chiavetta sorgente sulla destinazione.

dd if=/dev/sdd of=/dev/sde bs=512 count=1

in realtà dovrebbe bastare solo il MBR:

dd if=/dev/sdd of=/dev/sde bs=446 count=1

In questo modo avrai anche sulla destinazione
lo stesso MBR della sorgente contenente il
bootloader per avviare il sistema, altrimenti
se copi solo i dati la destinazione non sarà
avviabile, e nel tuo caso non va bene.

- Copiato il MBR (quindi i primi 446 bytes)
con fdisk devi modificare la tabella delle
partizioni come ti ho spiegato nel post
precedente: occhio, perchè questo passaggio
dipende anche da come era partizionata la
sorgente, per capirci il bootloader nel
MBR lo abbiamo clonato, per cui se era
ad esempio configurato per far partire la
seconda partizione della sorgente, allora
anche nella destinazione dovrai avere
questa seconda partizione. In pratica
il partizionamento della sorgente deve
essere coerente con quello della destinazione,
se avevi solo una partizione non c’è problema,
se invece ubuntu ha complicato le cose in fase
d’installazione creando magari più partizioni
allora ti consiglio di copiare tutto al
punto precedente: MBR+tabella; poi con fdisk
ti vai a modificare solamente la partizione
contenete il sistema e lasci stare le eventuali
altre eventualmente necessarie ad ubuntu.

Per maggiori dettagli dovresti dire come è
partizionata la sorgente, eventualmente posta
l’out di

fdisk -l /dev/sdd

Ovviamente al posto di sdd devi mettere il
file speciale associato alla tua chiavetta.

- allargata la partizione di sistema procedi come
spiegato nel post precedente:
. creazione fs con mkfs
. copia dati dalla sorgente con cp -a


Alternativa un po’ più brutale:

- copi tutta la sorgente con dd

dd if=/dev/sdd of/dev/sde bs=4M status=progress

- modifichi la tabella partizioni allargando
la partizione di sistema, di fatto eliminandola
e poi ricreandola al limite delle dimensioni
della destinazione, in pratica non modifichi
il bit iniziale e accetti il default per il
bit finale che ti propone fdisk, così non tocchi
eventuali partizioni precedenti e allo stesso
tempo vai ad occupare tutto lo spazio.
Per capirci, dopo la copia brutale la destinazione
potrebbe essere una cosa del tipo:

<|--MBR--|-tab-part-|-part-|-da-|-non.toccare-|-sistema-|....non allocato...>

andando a modificare la tabella delle partizioni
come spiegato allargando solo la partizione di
sistema verso la fine otterrai una cosa del tipo:

<|--MBR--|-tab-part-|-part-|-da-|-non.toccare-|---------- sistema ---------->
<|--MBR--|-tab-part-|-part-|-da-|-non.toccare-|-sistema-|....non allocato...>
^
|
..............................................| <-- deve iniziare lì

- allarghi il filsesystem che sta dentro alla
partizione allargata (resize2fs).


Puoi scegliere la via che preferisci, tenuto conto
del fatto che la prima è molto più sensata per non
ricopiare bit a bit lo spazio vuoto, quindi nel caso
in cui la sorgente contenga tanto spazio vuoto è
meglio “cp -a”.

Poi tieni conto anche che l’esempio riportato
sopra da per scontato un tipo di partizionamento
della sorgente... vecchia maniera, quindi con
MBR classico, ci sono altre situaizoni tipo se
fosse partizionata in GPT... questo dipende da
come l’avevi partizionata o come l’aveva fatto
ubuntu quando l’hai installato sulla chiavetta.
fdisk -l, come spiegato sopra chiarisce le cose
e se non basta puoi usare anche:

gdisk -l /dev/sdd

Così si capisce come è partizionata.

https://askubuntu.com/questions/491082/steps-to-create-dd-image-file-from-usb-and-restore-image-to-a-different-usb

Detto questo ci sono anche tool tipo clonezilla
che automatizzano un po’ le cose in casi come il
tuo.


In estrema sintesi puoi usare dd per lo scopo,
ma non basta se poi vuoi sfruttare tutto lo
spazio della chiavetta destinazione più grande.
Per farlo dovrai anche metter mano alla tabella
delle partizioni e dovrai muoverti a seconda del
tipo di partizionamento (mbr, gpt-bios gpt-uefi).
mauro
2019-06-19 04:57:01 UTC
Permalink
Post by Joe
della determinazione di quale sia il “bs=”
ottimale per ottenere il risultato nel tempo
minore possibile, che su volumi di una certa
dimensione è da valutare. Però sì, la copia
in ogni caso fila via liscia e la clonazione
è davvero tale.
metto sempre bs=4096
......cut.....
Post by Joe
In estrema sintesi puoi usare dd per lo scopo,
ma non basta se poi vuoi sfruttare tutto lo
spazio della chiavetta destinazione più grande.
Per farlo dovrai anche metter mano alla tabella
delle partizioni e dovrai muoverti a seconda del
tipo di partizionamento (mbr, gpt-bios gpt-uefi).
ok, letto tutto e a questo punto clonazione con dd e sistemazione spazio
rimanente con gparted -come poi ribadito da Guglielmo- credo sia l'unica.

Grazie
--
"buon anno...e si fumi una sigaretta"
"no grazie me fanno gira' la testa"
"e va bene, se la fumi dopo i pasti"
"dopo i pasti di chi?"
Joe
2019-06-19 08:09:13 UTC
Permalink
Post by mauro
ok, letto tutto e a questo punto clonazione con
dd e sistemazione spazio rimanente con gparted
come poi ribadito da Guglielmo credo sia l'unica.
Se credi sia l’unica ti consiglio di rileggere
quello che avevo scritto, in cui a parted o
gparted non ho fatto che un accenno e ho indicato
almeno due alternative, delle quali la più
“intelligente” ove possibile resta un bel cp -a,
perchè copia solo i dati e non lo spazio vuoto
il che ha poco senso. Ma anche clonezilla se
preferisci roba più automatizzata è ottimo.
Per cui dd + parted va bene, ma è tutt’altro
che l’unica scelta.

PS.
Nei miei messaggi precedenti ho detto una
sciocchezza riguardo al caso di partizionamento
in modalità GPT: le ultime versioni di
util-linux che contengono anche fdisk e sfdisk
sono state aggiornate per supportare anche
quel tipo di struttura. Quindi non serve ricorrere
ad altri tool tipo gdisk o sgdisk...
mauro
2019-06-19 17:40:52 UTC
Permalink
Post by Joe
Post by mauro
ok, letto tutto e a questo punto clonazione con
dd e sistemazione spazio rimanente con gparted
come poi ribadito da Guglielmo credo sia l'unica.
Se credi sia l’unica ti consiglio di rileggere
quello che avevo scritto, in cui a parted o
gparted non ho fatto che un accenno e ho indicato
almeno due alternative, delle quali la più
“intelligente” ove possibile resta un bel cp -a,
"l'unica" percorribile da uno come me che non riesce a seguire
adeguatamente approfondimenti con cui non ha dimestichezza, preferendo
l'unica strada che ha capito abbastanza bene cioè quello che già sa fare
(la riga di comando dd) più un intervento alla sua portata con gparted.

avrei sperato che per fare quello che mi occorre esistesse una riga di
comando dd tipo -scrivo un esempio immaginario- :
dd if= /dev/sdb 64Gb of=/dev/sdc 128Gb bs=4096 conv=notrunc,noerror
status=progress

ma non evidentemente non esiste, quindi torno nei miei ranghi.
Grazie
--
"buon anno...e si fumi una sigaretta"
"no grazie me fanno gira' la testa"
"e va bene, se la fumi dopo i pasti"
"dopo i pasti di chi?"
Joe
2019-06-19 18:23:08 UTC
Permalink
Post by mauro
Post by Joe
Post by mauro
ok, letto tutto e a questo punto clonazione con
dd e sistemazione spazio rimanente con gparted
come poi ribadito da Guglielmo credo sia l'unica.
Se credi sia l’unica ti consiglio di rileggere
quello che avevo scritto, in cui a parted o
gparted non ho fatto che un accenno e ho indicato
almeno due alternative, delle quali la più
“intelligente” ove possibile resta un bel cp -a,
"l'unica" percorribile da uno come me che non riesce a seguire
adeguatamente approfondimenti con cui non ha dimestichezza, preferendo
l'unica strada che ha capito abbastanza bene cioè quello che già sa fare
(la riga di comando dd) più un intervento alla sua portata con gparted.
avrei sperato che per fare quello che mi occorre esistesse una riga di
dd if= /dev/sdb 64Gb of=/dev/sdc 128Gb bs=4096 conv=notrunc,noerror
status=progress
Secondo me ti stai perdendo in bicchier d’acqua, ma
non discuto, ci sono tante alternative, dd + gparted
è una di queste... Se la preferisci vai tranquillo.
Se mandavi l’out di un “fdisk -l /dev/sdd” in modo
da capire la struttura della chiavetta sorgente era
un attimo più semplice darti una lista di comandi
precisi, ma va bene anche così.
Guglielmo
2019-06-18 09:06:43 UTC
Permalink
Post by mauro
Ciao, sto cercando una risposta in rete, qualcosa ho trovato ma forse
non la soluzione ottimale.
Voglio clonare una usb da 64 Gb su una da 128 sfruttando tutto lo spazio
di quest'ultima, e cioè NON lasciando spazio da 64 GB inallocato dopo la
clonazione dei 64 originali, ma prendendomi proprio tutti i 128 di
destinazione.
Cloni con DD e poi allarghi la èartizione con gparted per fargli prendere
lo spazio rimasto non allocato.
--
Ciao, Guglielmo.
Roby
2019-06-21 18:55:53 UTC
Permalink
Ciao, sto cercando una risposta in rete, qualcosa ho trovato ma forse non la
soluzione ottimale.
Voglio clonare una usb da 64 Gb su una da 128 sfruttando tutto lo spazio di
quest'ultima, e cioè NON lasciando spazio da 64 GB inallocato dopo la
clonazione dei 64 originali, ma prendendomi proprio tutti i 128 di
destinazione.
Ho letto che, banalmente, dopo aver operato con dd per la clonazione, potrei
avviare gparted sempre sulla distribuzione linux di appoggio dove ho eseguito
dd, creare una partizione ext4 sullo spazio rimasto vuoto e appenderla a
quella appena creata (clonata), per ottenerne una sola partizione di tutto lo
spazio nella usb di destinazione.
Mi sta bene, credo sia semplice.
Ma non c'è un modo -possibilmente comprensibile senza arzigogoli da
programmatore- di comandare la clonazione nella stringa dd per occupare già
tutto lo spazio sul volume di destinazione?
Grazie
Io tempo fa ho avuto un problema simile ma per la clonazione di SD per
Raspberry.... addirittura non riuscivo a clonare due SD di identica
capacità ma di marca diversa causa pochi byte di differenza (in meno)
sulla sd nuova....
Non riuscivo nemmeno usando come destinazione una SD più ampia....
Le ho provate tutte (escluso gparted che volevo evitare) ed ho poi
risolto utilizzando Acronis True Image 2014 la cui licenza l'avevo
acquistata appunto nel 2014....
Non ho mai provato a clonare USB ma non dovrebbe cambiare nulla....
L'unico problema è che devi possedere/acquistare una licenza
--
Roby
Loading...