[Risolto] backup partizione sistema con rsync

Ciao a tutti,
sto preparando una copia di backup della partizione del sistema operativo F17.
Come ho fatto per la mia home ho usato il comando

rsync -arvHu --delete / /media/Fedora_Backup

che è veloce e funziona benissimo.

Intendo non usare un’immagine iso perché il mio HD esterno diventerà una copia bootabile (ma più grande) in caso di defezione del mio HD (operando in seguito alla copia le opportune modifiche: UUID fstab e ramdisk).

Dunque il problema è questo (e non mi accadeve con F16… almeno a ricordo):
quando eseguo il comando (da root) e si avvia la sincronizzazione della cartella /home ecco i guai: rsync vuole copiare tutti i dati della home (che però fanno riferimento ad un’altra partizione) e mi crea delle copie fisiche dei files riempiendomi così la partizione copia…

In realtà quelli non sono dei link? quindi non dovrebbe copiarmi il reale contenuto della /home dalla partizione di avvio!!!
Ho usato questo comando con F16 e non mi sembrava affatto facesse questo macello!!!

Qualche idea?

credo che ci sia un problema
stai copiando la root / che contiene la /media/Fedora_Backup sulla /media/Fedora_Backup stessa.

ci può stare (a parte tutto però… con F16 questo comando l’ho usato ma non faceva così)

però la cosa strana è che avendo inserito -v mi avrebbe fatto vedere una copia in corso con sorgente
/media/Fedora_Backup e non /home/cartelle giusto?

qui si tratta di una copia in corso di /home/… ma che appartiene an un’altra partizione!!!

quindi hai un’idea di come fare?

@giolaser
in questo caso l’opzione

-- exclude /nome_cartella/

è tua amica.

mi sa di troppo facile usare --exclude /home/ :slight_smile:

Il mio dubbio è questo: la cartella /home sta un un’altra partizione del disco quindi /home sulla partizione del sistema operativo dovrebbe essere un link (o mi sbaglio?)

Se domani mi salta l’HD e devo avviare il sistema dal mio HD esterno che ha le due partizioni esattamente come quelle dell’originale (ma con dimensioni diverse aggiungo) il “link” (e sempre se è un link) deve essere necessariamente presente.
Mi sbaglio?

ciao dunque ho provato a dare il comando

rsync -arvHu --delete --exclude={/proc/*,/tmp/*,/mnt/*,/media/*,/lost+found,/home/*} /* /media/Fedora_Backup

che ho trovato googlando
ottengo un bel po’ di errori nella copia di file all’interno della cartella /sys tipo

ERROR: sys/module/usb_storage/parameters/swi_tru_install failed verification -- update discarded.
ERROR: sys/module/usb_storage/sections/.bss failed verification -- update discarded.
WARNING: sys/module/video/parameters/allow_duplicates failed verification -- update discarded (will try again).
WARNING: sys/module/videobuf2_vmalloc/coresize failed verification -- update discarded (will try again).
WARNING: sys/module/videobuf2_vmalloc/initsize failed verification -- update discarded (will try again).
WARNING: sys/module/videobuf2_vmalloc/initstate failed verification -- update discarded (will try again).
sys/module/video/sections/.init.text
rsync: read errors mapping "/sys/module/video/sections/.init.text": No data available (61)
sys/module/video/sections/.note.gnu.build-id

però il resto copia tutto.
intanto escludere quelle cartelle è corretto?
e questi errori?

comunque poi do il comando

chroot /media/Fedora_Backup

e mi ritrovo

bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
bash: /dev/null: Permesso negato
[root@localhost /]# 

il chroot lo ha fatto ma questi errori?

ultimo comando:
grub2-install /dev/sdc

per aggiornare il boot (sdc è il mio Hd esterno)

e…

[root@localhost /]# grub2-install /dev/sdc
/usr/share/grub/grub-mkconfig_lib: line 34: /dev/null: Permesso negato
/usr/sbin/grub2-install: line 293: /dev/null: Permesso negato
/usr/share/grub/grub-mkconfig_lib: line 62: /dev/null: Permesso negato
Path `/boot/grub2' is not readable by GRUB on boot. Installation is impossible. Aborting.

Io in pratica volevo solo arrivare a crearmi uno script che facesse queste cose:

  • copia di bakup della partizione di avvio su partizione disco esterna
  • risistemare la partizione esterna (chroot, grub2, fstab. ramdisc) in modo da renderla avviabile da disco esterno.

In pratica avere una copia identica avviabile del mio sistema da un HD esterno.

dovresti escludere anche la /sys dalle directory da copiare.

un chroot mica si fa così.

prima di dare il grub2-install devi sistemare fstab e ricreare il ramdisk.

caspita mi sono un po’ incasinato!!!
e ovviamente ho combinato un pasticcio…
Allora mettendo insieme i pezzi ho provato a fare così (e ho fatto male ovviamente)

ho dato il comando

rsync -arvHu --delete --exclude={/dev/*,/sys/*,/proc/*,/tmp/*,/mnt/*,/media/*,/lost+found,/home/*} /* /media/Fedora_Backup

copiato tutto senza problemi
ho modificato fstab

poi ho combinato un pasticcio sigh. :

visto che la partizione era già montata ho semplicemente scritto

mount -o bind /dev /media/Fedora_Backup/dev
mount -o bind /proc /media/Fedora_Backup/proc
mount -o bind /sys /media/Fedora_Backup/sys
mount -o bind /run /media/Fedora_Backup/run
chroot /media/Fedora_Backup
grub2-install /dev/sdc
dracut --force /boot/initramfs-$(uname -r).img $(uname -r)

sigh ho fatto prima il grub2 e poi dracut e mi sono dimenticato della /boot!!!

in sostanza ora il mio sistema se ho l’HD esterno parte (ma poi il disco di avvio rimane l’hd interno)
se faccio il boot senza HD esterno il sistema non parte dicendomi “grub2 error: file not found”

Che pasticcio!!!

  1. come rimettere a posto la cosa senza casini? (immagino che ho riscritto il ramdisk sul HD del pc e non su quello esterno)

  2. una sequenza tipo

rsync -arvHu --delete --exclude={/dev/*,/sys/*,/proc/*,/tmp/*,/mnt/*,/media/*,/lost+found,/home/*} /* /media/Fedora_Backup
#sistemazione fstab
mount -o bind /boot /media/Fedora_Backup/boot
mount -o bind /dev /media/Fedora_Backup/dev
mount -o bind /proc /media/Fedora_Backup/proc
mount -o bind /sys /media/Fedora_Backup/sys
mount -o bind /run /media/Fedora_Backup/run
chroot /media/Fedora_Backup
dracut --force /boot/initramfs-$(uname -r).img $(uname -r)
grub2-install /dev/sdc

può funzionare?

ok raga il primo punto l’ho risolto da solo… wow

la via che hai scelto per fare questa cosa, è per me insolita.
avrei invece proceduto da live, clonato il sistema sull’hardisk esterno ( la cosa è più semplice partendo da un sistema esterno),
modificato fstab e ramdisk sull’hardisk esterno, ricostruito ed installato grub2 sul mbr del hardisk sempre da live verificando che vede il sistema sull’hardisk esterno,
lanciato il sistema sull’hardisk, modificato i dettagli del grub2 ( eliminando i riferimenti al hardisk interno) e ricostruendolo.

ma funziona secondo te?

funziona, cosa ?

la soluzione 2

dovrebbe, però prima del dracut, farei la modifica di fstab.

dunque… ho scelto questa via perché posso così fare un aggiornamento del mio HD esterno procededo come se fosse un normale backup (senza quindi dover riavviare da live)

In questo modo mi faccio uno script e lo lancio da root dopo aver montato l’HD esterno. Molto automatico… (e ho sempre il backup di fedora aggiornato)

Quindi ho fatto la prova:

  • mi sono creato un file chiamato fstab_HD_Ext
    riporto qui il contenuto:
    UUID=dbce21eb-4003-4f4e-91f6-53540063ec87 / ext4 defaults 1 1
    UUID=4be04f2d-dabb-485e-b2f6-98d42d33f1bf swap swap defaults 0 0
    UUID=cea572e8-de63-4918-95e8-ff6061f063c5 /home ext4 defaults 1 2
    che è la stessa cosa del mio fstab del pc ove però ho cambiato gli uuid con quelli dell’HD esterno

Poi ho proceduto in questo modo:

rsync -arvHu --delete --exclude={/dev/*,/sys/*,/proc/*,/tmp/*,/mnt/*,/media/*,/lost+found,/home/*} /* /media/Fedora_Backup
cp /home/glazzarini/fstab_HD_Ext /media/Fedora_Backup/etc/fstab
mount -o bind /boot /media/Fedora_Backup/boot
mount -o bind /dev /media/Fedora_Backup/dev
mount -o bind /proc /media/Fedora_Backup/proc
mount -o bind /sys /media/Fedora_Backup/sys
mount -o bind /run /media/Fedora_Backup/run
chroot /media/Fedora_Backup
dracut --force /boot/initramfs-$(uname -r).img $(uname -r)
grub2-install /dev/sdc

Fatto tutto senza errori di sorta ma…
capperi vado ad editare il /boot/grub2/grub.cfg e lo vedo ancora identico a quello del PC!!!

Sbaglio qualcosa?

Come dice lo stesso grub.cfg:

[quote]# cat /boot/grub2/grub.cfg

DO NOT EDIT THIS FILE

It is automatically generated by grub2-mkconfig using templates

from /etc/grub.d and settings from /etc/default/grub

…[/quote]

Capperi… quindi non basta…
devo dare anche il comando grub2-mkconfig!!!

Tipo

grub2-mkconfig  /boot

dopo il chroot?
non è che poi va a cercare anche le partizioni di boot del PC??

No, perché grub2 andrebbe a rileggere le impostazioni da /etc/grub.d/ e da /etc/default/grub e quindi saresti da capo.
Hai provato a disattivare in qualche modo l’hd (da bios o staccando l’hd) a far partire una live, montare le partizioni del hd esterno, farci un chroot e da li dare un

grub2-install /dev/sdX

dove X lo trovi da fdisk -l o parted -l? In pratica seguire la nostra http://doc.fedoraonline.it/Reinstallare_Grub#Grub2.

come ormai si è capito volevo tentare una strada ove non fosse necessario staccare dei devices o riavviare da live.
(cioè in definitiva costruirmi uno script che lanciandolo facesse tutto da solo… chissa se riuscirò…)

due domande:
1)
perché dopo i comandi di mount e chroot:

mount -o bind /boot /media/Fedora_Backup/boot
mount -o bind /dev /media/Fedora_Backup/dev
mount -o bind /proc /media/Fedora_Backup/proc
mount -o bind /sys /media/Fedora_Backup/sys
mount -o bind /run /media/Fedora_Backup/run
chroot /media/Fedora_Backup

chiedendo
un ls /boot ottengo la lista della /boot dell’HD e non quella dell’HD esterno?

  1. ma il chroot vale solo per il processo attuale o per tutto il sistema? (cioè un chroot dentro una shell rimane vincolato a quella shell e fuori è tutto come prima?)

Appunto provando il comando grub2-mkconfig mi ha sovrascritto ANCHE quello di /boot dell’HD (fortuna che avevo fatto una copia prima di sicurezza) come se /boot dell’HD fosse un’immagine raid di /boot HD esterno

Dopo un quintilione di prove mi sono arreso…
Quindi ho fatto così per avere il sistema bootabile da HD esterno e mantenerlo sempre aggiornato:

Ho fatto un rsync del disco di avvio sull’HD esterno
Ho preparato poi L’HD esterno e fatto diventare bootabile da una live (avendo rimosso il mio HD) usando grub2 (secondo poi i suggerimenti avuti).

Ora il mio sistema esterno è bootabile ed è identico (provato e funziona)

quando dovrò aggiornare la home uso

rsync -arvHu --delete /home/glazzarini /media/Home_Backup

e funziona perfettamente
quando dovrò aggiornare il disco di avvio userò

rsync -arvHu --delete --exclude={/dev/*,/sys/*,/proc/*,/tmp/*,/mnt/*,/media/*,/lost+found,/home/*,/etc/fstab,/boot/grub2/grub.cfg} /* /media/Fedora_Backup

se poi su HD interno c’era un aggiornamento del kernel allora andrò a modificare a mano il grub2.cfg e
sostituirò i files con quelli nuovi.

(questo però non l’ho ancora provato)

Non è che devo rifare il ramdisk con dracut vero?