Come spostare Linux in un'altra partizione?


9

Ho bisogno di fare una copia di un sistema Linux funzionante, che (essendo contenuto in /, e il nuovo posto è preparato in / mnt / sdb5) sembra contenere una considerevole quantità di hard-link e file speciali in / dev; sarebbe cpiogestire questo lavoro senza applicare la magia aggiuntivo?

Protezioni attualmente note:

  • non rimuovere / modificare il sistema in esecuzione fino al momento in cui la copia viene considerata avviabile e funzionante root=/dev/sdb5; prima di rimuovere, eseguire un backup completo della partizione.
  • utilizzerà cpio per l'archiviazione di ciascuna directory radice separatamente, quindi verrà decompressa dall'ambiente LiveCD in modo da non danneggiare la partizione del donatore

Tuttavia, non perderemo tempo solo perché cpio ha perso qualche flag e ha paralizzato i permessi / tipo di nodo / soft o hardlink.

Quale strumento usare / quali rocce sottomarine evitare?



@warren, grazie. sta per fare un altro test cpio-vs-tar ora;)
kagali-san

non preoccuparti: spero che ti aiuti :)
Warren,

Risposte:


10

Per rispondere alla domanda reale in merito a cpio: Queste sono le bandiere che vorrei utilizzare per cpio:

find / -xdev -depth \! -path ./lost+found -print0 | cpio --pass-through --null --dot --make-directories --unconditional --preserve-modification-time --sparse /mnt/sdb5

Ovviamente, dal momento che non stai copiando sulla rete, userei solo cp:

cp --archive --sparse=always --verbose --one-file-system --target-directory=/mnt/sdb5 /

E se vuoi essere in grado di eseguire più volte la copia, rsyncè una scelta migliore per le sue capacità di ripresa. (Inoltre, come cp, gestisce ACL e attributi estesi e può opzionalmente funzionare sulla rete come cpio. Quindi è l'opzione più utile, tranne per fare la prima copia localmente, che preferisco fare usando cp.)

rsync --archive --inplace --hard-links --acls --xattrs --devices --specials --one-file-system --8-bit-output --human-readable --progress / /mnt/sdb5

Non dimenticare di copiare /boote /dev!

/bootè facile, basta copiarlo. Ma /devoggi è molto più complicato da quando è nascosto udev. Raccomando la seguente procedura:

  1. mkdir /tmp/dev
  2. mount --move /dev /tmp/dev
  3. Copia /devsu /mnt/sdb5utilizzando uno dei comandi sopra
  4. mount --move /tmp/dev /dev
  5. rmdir /tmp/dev

6

Come accennato da @Klox, quando copio le partizioni della stessa dimensione accetto di utilizzare dd.

Ma quando vuoi copiare un disco su una partizione diversa con dimensioni diverse, preferirei andare avanti rsync. Montare la nuova partizione (diciamo, / mnt / new) e:

# rsync -a --exclude=/proc --exclude=/dev --exclude=/sys / /mnt/new

Nessuna magia adizionale per i collegamenti simbolici e nessuna necessità di cd live (singolo utente / init 1 andrà bene).


Ah, si Uso rsynctutto il tempo e ho perso l'ovvio. Mi piace ddper i motivi che ho affermato, ma rsyncè più adatto alle esigenze del PO.
Klox,

3

La variante più ottimale di ddsta usando partimage, copierà solo la sezione usata della partizione rendendo più conveniente la copia di grandi partizioni inutilizzate.

Nota l'importante avvertimento:

Partimage NON supporta Ext4 che è l'impostazione predefinita per le nuove installazioni di Ubuntu.

Una copia conveniente è inclusa nella distribuzione del CD di System Rescue .


2

Quando si spostano installazioni Linux tra dischi rigidi, avvio sempre da un Live CD e lo uso ddper copiare l'intera partizione. Riconosco che questo non riguarda i cambiamenti nella dimensione del disco (inevitabilmente il nuovo disco è più grande, il che semplifica le cose), ma mi piace la tecnica esattamente per i motivi che ti preoccupano nell'uso cpio: qualcosa potrebbe andare storto. Usando la ddtecnica, è tutto o niente: o il nuovo disco si avvia e tutto è uguale, oppure il disco non si avvia. Non c'è rischio che si verifichino problemi in agguato in seguito.

Ora, ovviamente, c'è il problema della partizione che non riempie il nuovo disco, ma preferirei semplicemente creare una nuova partizione per riempire lo spazio extra e fare affidamento su collegamenti simbolici per spostare le directory. (Sono sicuro che ci sono anche strumenti per ridimensionare le partizioni, ma non le ho usate.)


Il sistema di cui parlo ha circa 50 concerti gratuiti su partizione XFS da 500 GB (che non può essere ridotta, attualmente solo la crescita è supportata tramite xfs_grow) e anche la partizione radice è XFS; peggio ancora, è un Gentoo affermato che è quasi quel grasso stesso. Ancora peggio, la mossa deve essere eseguita senza aggiungere più spazio di archiviazione e attualmente non è possibile eseguire il backup di oltre 60 concerti, quindi nessuna operazione di partizione. È necessario mettere Win 'su quella macchina per testare alcune cose.
Kagali-san,

inoltre, dd è carino, ma per le operazioni di unità / partizione tendo ad usare più .. soluzioni proprietarie. Acronis TrueImage sembra funzionare meglio (compressione, condivisioni samba - da livecd / liveusb flash).
Kagali-san,
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.