Μεταφορά διανομής από ένα διαμέρισμα σε ένα άλλο(ή full backup)

ΑΥΤΗ Η ΔΗΜΟΣΙΕΥΣΗ ΕΧΕΙ ΓΙΝΕΙ ΠΑΝΩ ΑΠΟ ΕΝΑ ΧΡΟΝΟ ΠΡΙΝ!

Η παρακάτω διαδικασία έχει δοκιμαστεί σε Ubuntu / Arch Linux / Fedora 20 και έχει δουλέψει όλες τις φορές όπως πρέπει.

Περιγράφει την διαδικασία που μπορούμε να ακολουθήσουμε για να μεταφέρουμε την διανομή μας σε ένα άλλο διαμέρισμα του δίσκου ή στο διαμέρισμα ενός άλλου δίσκου.

Σε ποια περίπτωση θα θέλαμε να μεταφέρουμε την διανομή μας ;
Διαφέρει κατά περίπτωση ή προτίμηση. Προσωπικά οι μεταφορές που έκανα ήταν όταν πρόσθεσα έναν νέο SSD. Ήθελα να μεταφέρω τις διανομές στον SSD και να κρατήσω τον HDD για αποθηκευτικό χώρο.
Μπορείτε να χρησιμοποιήσετε την διαδικασία και για backup ολόκληρης της διανομής σε έναν άλλο δίσκο (π.χ εξωτερικό σκληρό).

Δημιουργία διαμερίσματος ίδιου ή μεγαλύτερου μεγέθους
Όπως καταλαβαίνετε θα πρέπει να δημιουργήσουμε ένα ίδιου μεγέθους (ή λίγο μεγαλύτερο) διαμέρισμα και να προσθέσουμε ένα ίδιο σύστημα αρχείων. Γραφικά αυτό γίνεται εύκολα με το Gparted. Αφού δημιουργήσουμε το διαμέρισμα θα έχουμε ένα επιπλέον άδειο διαμέρισμα π.χ το /dev/sda3 σε ext4 σύστημα αρχείων.

Προσάρτηση διαμερίσματος σε σημείο προσάρτησης
Για να μεταφέρουμε όλη την διανομή θα πρέπει να προσαρτήσουμε αυτό το νέο διαμέρισμα που φτιάξαμε. Οπότε, επιλέγουμε ένα σημείο προσάρτησης (ένα έτοιμο που διαθέτει το Linux είναι το /mnt) και προσαρτούμε το διαμέρισμα. π.χ

sudo mount /dev/sda3 /mnt

Μεταφορά όλης της διανομής με την rsync
Σε αυτό το σημείο θα αντιγράψουμε όλα τα αρχεία, όλη την διανομή, από το / (root) στο /mnt/ (στο νέο διαμέρισμα δηλαδή). Θα χρησιμοποιήσουμε την παρακάτω εντολή

sudo rsync -aAXv /* /mnt/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}

Κάνουμε exclude κάποιους καταλόγους που «δεν μπορούμε» να αντιγράψουμε, είτε διότι είναι δυναμικοί, είτε εικονικοί, είτε δεν τους θέλουμε. Ότι άλλο θέλουμε να κάνουμε exclude μπορούμε να το προσθέσουμε.
Βλέπετε ότι έχουμε κάνει exclude και το ίδιο το /mnt/ , καθώς και τον κατάλογο /media/ (όπου συνήθως προσαρτώνται αυτόματα USB..κλπ). Κάντε exclude ή unmount ότι άλλο μέσο έχετε προσαρτήσει, διότι θα αντιγραφεί και αυτό αν δεν το κάνετε. Αν για παράδειγμα έχουμε ένα USB stick προσαρτημένο στο /media/myusb/ και δεν κάνουμε exclude το /media/ , θα αντιγραφούν και όλα τα περιεχόμενα του stick. Φανταστείτε να είναι κάποιος σκληρός δίσκος 500GB, θα αποτύχει η διαδικασία λόγω μεγέθους.

Κάνοντας boot από την «νέα» διανομή
Εδώ θέλει λίγη προσοχή. Θα πρέπει να φτιάξουμε το /etc/fstab στην «νέα» διανομή (στο νέο διαμέρισμα), καθώς και τον bootloader, έτσι ώστε να γίνει εκκίνηση στην «νέα» διανομή και όχι στην παλιά. Η παλιά συνεχίζει να υπάρχει και δεν θα την διαγράψουμε ή οτιδήποτε άλλο αν δεν κάνουμε πρώτα εκκίνηση στην «νέα» διανομή να δούμε αν λειτουργεί σωστά.

Δίνοντας την εντολή

sudo gedit /mnt/etc/fstab

θα ανοίξει ο κειμενογράφος gedit να να επεξεργαστούμε το fstab. Εδώ χρησιμοποιώ τον gedit, εσείς χρησιμοποιείτε όποιον σας βολεύει (ή έχετε εγκαταστήσει).
Δίνουμε επίσης την εντολή

sudo blkid

Από το αποτέλεσμα θέλουμε το UUID του /dev/sda3(στην περίπτωσή μας) έτσι ώστε να αντικαταστήσουμε το παλιό UUID με το νέο.
Αντικαθιστούμε το UUID=xxx.xxx.xxx.xxx.xx.xxx στο /mnt/etc/fstab(είναι ήδη ανοιχτό το αρχείο στον gedit) εκείνο που γίνεται mount στο / (root), με το νέο που μας έδωσε η εντολή blkid στο /dev/sda3.

fstab-sreenshoot-rsync-copy-distro

Τώρα θα πρέπει να «διορθώσουμε» τον bootloader. Εδώ θα δούμε τον grub, όπου είναι ο δημοφιλέστερος στο Linux. Αυτό που θέλουμε να καταφέρουμε, είναι να κάνουμε boot στην «νέα» διανομή (στο νέο διαμέρισμα). Οπότε, θα επεξεργαστούμε το αρχείο /boot/grub/grub.cfg (ή /boot/grub2/grub.cfg σε Fedora) για να αλλάξουμε κι εκεί το UUID με το νέο. Αφού κάνουμε boot στην νέα διανομή θα εγκαταστήσουμε τον grub ξανά (από την νέα διανομή πλέον). Εδώ φυσικά δεν θα γράψουμε το UUID (όλον αυτόν τον αριθμό) αλλά το device node. Δεν συνίσταται ούτε το device node στον grub , ούτε η απευθείας επεξεργασία του grub.cfg όπως θα κάνουμε εμείς εδώ. Εδώ θα το κάνουμε μόνο και μόνο για ένα boot (μετά θα το φτιάξουμε μέσα από την «νέα» πλέον διανομή).

Οπότε,

sudo gedit /boot/grub/grub.cfg

και αλλάζουμε την γραμμή linux, εκεί που λέει root=UUID=xxx.xxxx.xxxx.xxx με root=/dev/sda3. Αποθηκεύουμε το έγγραφο και κάνουμε μια επανεκκίνηση. Θα πρέπει τώρα όταν κάνουμε boot επιλέγοντας το αρχείο που πειράξαμε να κάνουμε εκκίνηση στην «νέα» διανομή που αντιγράψαμε στο νέο διαμέρισμα.
π.χ αυτή η γραμμή

   linux   /boot/vmlinuz-3.13.10-200.fc20.x86_64 root=UUID=00eb889b-9c66-46e7-b021-99b89d28e23b ro vconsole.font=latarcyrheb-sun16  rhgb quiet

πρέπει να γίνει

   linux   /boot/vmlinuz-3.13.10-200.fc20.x86_64 root=/dev/sda3 ro vconsole.font=latarcyrheb-sun16  rhgb quiet

Την γραμμή θα την βρούμε κάνοντας scroll προς τα κάτω και πιθανότατα θέλουμε το πρώτο entry που βρίσκεται κάτω από το ### BEGIN /etc/grub.d/10_linux ###.

Μετά το επιτυχημένο boot
Ας κάνουμε και έναν έλεγχο να δούμε έχουμε κάνει boot στην «νέα διανομή»;
Μπορούμε να δώσουμε

df -h

και θα πρέπει να μας επιστρέψει ως αποτέλεσμα το /dev/sda3(στην περίπτωση μας) ως προσαρτημένο στο root /
Π.χ.

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        29G   11G   17G  39% /

Μετά το επιτυχημένο boot στην «νέα» πλέον διανομή, μπορούμε να εγκαταστήσουμε τον grub ξανά στο MBR του δίσκου και να κάνουμε μια ανανέωση.
Φυσικά θα βρει και την «παλιά διανομή», αλλά αν θέλουμε μπορούμε να την διαγράψουμε εντελώς, πριν κάνουμε ανανέωση του grub. Φυσικά θα πρέπει να έχουμε εξασφαλίσει πως η «νέα» διανομή δουλεύει σωστά (όπως η παλιά).

Η εντολή εγκατάστασης του grub είναι

sudo grub-install --recheck /dev/sda

ενώ της ανανέωσης

sudo grub-mkconfig -o /boot/grub/grub.cfg

Σε Fedora αντικαθιστούμε το grub με grub2.

Μετά και από τα παραπάνω πρέπει να είμαστε εντάξει. Για να το τσεκάρουμε βέβαια ότι είμαστε εντάξει, κάνουμε μια επανεκκίνηση και θα πρέπει να δούμε κανονικά στο menu του grub και την «νέα διανομή». Αν αφήσουμε και την «παλιά», ίσως χρειαστεί να χρησιμοποιήσουμε το πλήκτρο e(dit) στο menu του grub για να διαπιστώσουμε ότι η «νέα» διανομή υπάρχει στην λίστα, μιας και οι εγγραφές θα είναι πανομοιότυπες. Κανονικά όμως, η «νέα» διανομή θα πρέπει να βρίσκεται πρώτη στην λίστα του grub, αφού ο δικός της grub είναι εγκατεστημένος πλέον στο MBR του δίσκου. Έπειτα από όλους τους ελέγχους μπορούμε να διαγράψουμε την «παλιά διανομή» μέσω του Gparted και να εκμεταλλευτούμε αλλιώς τον χώρο που θα μείνει.

Η παραπάνω διαδικασία ενδέχεται να αλλάζει λίγο αν έχουμε multi-boot σύστημα και ο grub που είναι εγκατεστημένος στο MBR του δίσκου είναι άλλης διανομής από αυτή που μεταφέρουμε(και δεν θέλουμε να τον αντικαταστήσουμε).
Επίσης, η παραπάνω διαδικασία φυσικά και δεν χρειάζεται σε περίπτωση backup. Αρκεί να προχωρήσουμε μέχρι την εντολή rsync. Σε περίπτωση επαναφοράς του συστήματός μας μπορούμε να χρησιμοποιήσουμε την ίδια εντολή.

3 thoughts on “Μεταφορά διανομής από ένα διαμέρισμα σε ένα άλλο(ή full backup)

  1. ερωτηση: αυτους που κανουμε exclude, μετα δεν θα πρεπει να τους δημιουργησουμε με το χερι?mkdir

    1. Όχι. Αν εννοείς καταλόγους όπως οι /proc, /dev, /run… Κλπ, θα δημιουργηθουν ξανά στην εκκίνηση του λειτουργικού. Αν κάνεις exclude κάποιον δικό σου κατάλογο, π. χ. από το home σου, τότε πρέπει να τον δημιουργησεις ξανά.

  2. Ευχαριστώ για τον οδηγό! Σύντομα θα πάρω νέο SSD μεγαλύτερης χωρητικότητας και σκεφτόμουν πως να την κάνω την μεταφορά! Οπότε κάνω Bookmark του οδηγού για μελλοντική χρήση!

Συμβάλετε κι εσείς με ένα σχόλιο

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s