Newsgroup: it.comp.os.linux.ubuntu
Titolo: clonare con dd da usb 64 Gb a usb 128 Gb

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?"

 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.

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

 
 
Cloni con DD e poi allarghi la čartizione con gparted per fargli prendere 
lo spazio rimasto non allocato.
 
-- 
Ciao, Guglielmo.

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

 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


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

 “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.


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

 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