# Eseguire un backup

## Javaskit

Salve a tutti,

Dovendo cambiare lo schema di partizionamento, ho deciso di fare prima un backup. Cercando nel forum ho trovato questi topic: https://forums.gentoo.org/viewtopic-t-174124-highlight-quickpkg.html , https://forums.gentoo.org/viewtopic-t-765806-view-next.html?sid=cd7dd86927e69343d09a1363cdbf7ea4 . In particolare nell'ultimo topic si discute su quale strategia di backup usare (stage4 o backup a livello atomico), problema che mi sono posto anche io. Anche sul wiki http://wiki.gentoo.org/wiki/Backup sono presenti informazioni a riguardo. Avendo deciso di usare un backup a livello atomico, non ho trovato una guida che possa illustrarmi un procedimento da seguire (sebbene possa provare a seguire una certa strada, trattandosi di un'operazione così delicata   :Cool:   (non ho altri backup), preferisco attendere pareri di chi ne sa più di me). 

EDIT: Ad esempio in uno dei topic che ho elencato è presente la seguente procedura di backup:

 *Quote:*   

> 
> 
> Creavo una cartella con la data del giorno. Dentro ci copiavo: 
> 
> - file world (/var/lib/portage/world) 
> ...

 

Per ripristinare il sistema invece:

 *Quote:*   

> 
> 
> - uso lo snapshot portage del backup 
> 
> - rimpiazzo make.conf e world con i rispettivi file del backup 
> ...

 

Tuttavia questo procedimento non è stato testato.

Grazie per le risposte.

Java

----------

## sabayonino

ciao.

il backup (immagne clonata dell'HHD o semplice copia die files/cartelle) è importante se non si vuole perdere le tante ore di compilazione di un sistema perfetto.

di metodi di backup ce ne sono una infinità. basta trovare quello di proprio gradimento.

oltre allo stage4 potrei anche suggerirti (e studiare/provare) anche

rsnapshot per backup incrementali (sistema,home o quello che si desidera)

fsarchiver. puoi effettuare backup delle singole partizioni o di cartelle (cambiando anche tipo di filesystem durante il ripristino !) . ti invito a leggere http://www.fsarchiver.org/Main_Page

io oltre allo stage4 , mi affido anche all'accoppiata rsnapshot+fsarchiver (backup dell'ultimo snapshot con fsarchiver) tutto automatizzato da script + cronjob

il vecchio e caro clonezilla per i recovery disastrosi   :Wink:   (giusto l'altro giorno ho clonato un disco su 3 sistemi gemelli in meno di 20 minuti ! tutti gentoo)

anche con squashsfs (il filesystem utilizzato dalle live) è possibile effettuare un backup (offre un'elevata compressione).

basta trovare il tool preferito ed organizzarsi ... per non piangere dopo !

SystemRescueCd è basata su Gentoo ed offre molti tool di ripristino .

----------

## sabayonino

 :Shocked:   ho visto gli edit solo ora !   :Embarassed: 

se vuoi utilizzare un backup a livello atomico puoi utilizzare catalyst

(dev-util/catalyst)

per generare l'albero di portage installato e poi affidarti a  quickpkg per generare i pacchetti installati (o alcuni pacchetti)

una cosa molto veloce veloce potrebbe essere :

salva l'attuale albero di portage con catalyst

(di default è salvato in /var/lib/catalyst/snapshots , ma è comunque personalizzabile editando il suo file di configurazione in /etc/catalyst/catalyst.conf e modificando la variabile storedir)

```
# catalyst -C target=snapshot version_stamp=`date +"%d-%m-%Y"`
```

e poi crea tutti i binari dei pacchetti installati (o quelli che ti interessnoa) includendo i file di configurazione

```
# quickpkg --include-config y "*/*" 
```

in caso di ripristino di sistema , utilizzerai lo snapshot di portage creato con le versioni degli ebuild allineate con i pacchetti binari 

ulteriori informazioni per quickpkg e settaggi vari : Wiki-Gentoo  :Rolling Eyes:  ed il manuale del comando quickpkg (molto semplice)

```
# man quickpkg
```

ovviamente da affinare secondo le proprie esigenze   :Razz: 

----------

## djinnZ

Leggi qui, non ci vuol molto a modificare il comando per farne un backup ed un ripristino.

Ovviamente ti mancheranno i file di configurazione presenti nello stage (e qui vengono i dolori).

Ricorda che 

```
--include-config=y --include-unmodified-config=y
```

 sono parametri indispensabili.

In questo modo dovresti evitare brutte sorprese perdendo i file di configurazione che non vengono modificati nell'update.

Tuttavia trattandosi di qualcosa che fai solo estemporaneamente per spostare i dati mi rivolgerei più ad uno stage4 e lo ripristinerei direttamente senza passare per stringere/allargare le partizioni. meglio non complicarsi troppo la vita.

In realtà nel thread che hai riportato insistevo sull'atomicità del backup nell'ottica di uno storage a medio/lungo termine e su supporti relativamente inaffidabili come i dvd.

Il vantaggio procedendo attraverso i binari, nel tuo caso, è che potresti eliminare eventuale "cruft" e semplificare il world ma sappi che è un lavoraccio.

----------

## Javaskit

sabayonino,

Avevo già usato il tuo post come spunto personale per approfondire il progetto "FSArchiver" che non conoscevo e che mi è sembrato molto interessante anche se non l'ho ancora provato. 

djinnZ,

 *djinnZ wrote:*   

> Tuttavia trattandosi di qualcosa che fai solo estemporaneamente per spostare i dati mi rivolgerei più ad uno stage4 e lo ripristinerei direttamente senza passare per stringere/allargare le partizioni. meglio non complicarsi troppo la vita.

 

Diciamo pure che spesso ho la tendenza a complicarmi inutilmente la vita   :Very Happy:  . Comunque basandomi sul tuo post https://forums.gentoo.org/viewtopic-t-883802.html sono riuscito a creare i package binari di tutto il sistema.

In definitiva la soluzione che ho adottato (l'anno scorso   :Laughing:  ) è stata la seguente :

- Ho creato i package binari di tutto il sistema (incluso il kernel e il bootloader) basandomi su quanto scritto in https://forums.gentoo.org/viewtopic-t-883802.html ; 

- Ho creato il backup dell'intero sistema con il seguente script:

```
#!/bin/bash

############################## backup.sh ##############################

# etc.backup

cp -a /etc etc.backup

# packages.tar.gz

tar -cvzpf packages.tar.gz /usr/portage/packages > packages.log

md5sum packages.tar.gz > packages.md5

# pkg.tar.gz

tar -cvzpf pkg.tar.gz /var/db/pkg --exclude /var/db/pkg/gentoo-sources --exclude /var/db/pkg/sys-boot/grub > pkg.log

md5sum pkg.tar.gz > pkg.md5

# .config.backup

cp /usr/src/linux/.config .config.backup

# grub.conf.backup

cp /boot/grub/grub.conf grub.conf.backup

# home.tar.gz

tar -cvzpf home.tar.gz /home > home.log

md5sum home.tar.gz > home.md5
```

- Dopo ho creato la tabella delle partizioni e ho lanciato i comandi raccolti negli script seguenti (ho lanciato i comandi da "SystemRescueCd" uno alla volta, non ho eseguito direttamente gli script):

```
#!/bin/bash

############################## restore.sh ##############################

# Restore Gentoo Linux.

# Note 1: /dev/sr0 contains

# backup.sh

# restore.sh

# chroot.sh

# install_pkg.sh

# stage3

# etc.backup       --> /etc

# pkg.tar.gz       --> /var/db/pkg (excluded gentoo-sources and grub)

# packages.tar.gz  --> /usr/portage/packages

# .config.backup   --> /usr/src/linux/.config

# grub.conf.backup --> /boot/grub/grub.conf

# home.tar.gz      --> /home

############################## Mounting ################################

# /dev/sda2 --> /

# /dev/sda5 --> /boot

# /dev/sda6 --> /home

# /dev/sr0  --> /backup

mkdir /mnt/gentoo

mount /dev/sda2 /mnt/gentoo

mkdir /mnt/gentoo/boot

mount /dev/sda5 /mnt/gentoo/boot

mkdir /mnt/gentoo/home

mount /dev/sda6 /mnt/gentoo/home

mkdir /mnt/gentoo/backup

mount /dev/sr0 /mnt/gentoo/backup

##############################  Stage3  ###############################

tar -xvjpf stage3-*.tar.bz2 -C /mnt/gentoo

cp etc.backup/resolv.conf /mnt/gentoo/etc/

cp etc.backup/portage/make.conf /mnt/gentoo/etc/portage/ 

##############################  chroot  ###############################

mount -t proc none /mnt/gentoo/proc

mount --rbind /sys /mnt/gentoo/sys

mount --rbind /dev /mnt/gentoo/dev

chroot /mnt/gentoo /backup/chroot.sh

##############################  Restart  ###############################

cd

umount -l /mnt/gentoo/dev{/shm,/pts,}

umount -l /mnt/gentoo{/boot,/home,/proc,}

reboot
```

```
#!/bin/bash

############################## chroot.sh ##############################

source /etc/profile

##############################  Portage  ############################## 

cd /

emerge-webrsync

mkdir /usr/portage/packages

tar -xvzpf /backup/packages.tar.gz -C /usr/portage/packages

tar -xvzpf /backup/pkg.tar.gz -C /home 

mkdir /var/log/portage

eselect profile set 5

cp /backup/etc/localtime /etc/localtime

cp /backup/etc/timezone /etc/timezone

##############################  Kernel  ###############################

emerge -av1K gentoo-sources

cp /backup/.config.backup /usr/src/linux/.config

cd /usr/src/linux

make && make modules_install

cp arch/x86/boot/bzImage /boot/gentoo-sources

cd /

##############################  System  ##############################

cp /backup/etc/fstab /etc/fstab

cp /backup/etc/conf.d/hostname /etc/conf.d/hostname

cp /backup/etc/conf.d/net /etc/conf.d/net

cp /backup/etc/issue /etc/issue

cd /etc/init.d ; ln -s net.lo net.wlan0 ; rc-update add net.wlan0 default ; cd /

cp /backup/etc/hosts /etc/hosts

passwd

cp /backup/etc/rc.conf /etc/rc.conf

cp /backup/etc/conf.d/keymaps /etc/conf.d/keymaps

cp /backup/etc/conf.d/hwclock /etc/conf.d/hwclock

cp /backup/etc/locale.gen /etc/locale.gen

locale-gen

cp /backup/etc/env.d/02locale /etc/env.d/02locale

env-update && source /etc/profile

############################## Bootloader ##############################

emerge -av1K grub

cp /backup/grub.conf.backup /boot/grub/grub.conf

grep -v rootfs /proc/mounts > /etc/mtab

grub-install --no-floppy /dev/sda
```

Praticamente restore.sh e chroot.sh ricalcano i passi del manuale di Gentoo;

- Poi ho reinstallato i package binari con lo script:

```
#!/bin/bash

############################## install_pkg.sh ##############################

for category in $(ls -1 /home/pkg/)

do

        for package in $(ls -1 /home/pkg/"$category"/)

        do

                emerge -1OK ="$category"/"$package" 

                rm -r /home/pkg/"$category"/"$package"

                echo "$category/$package installed" >> /home/pkg_installed.log

        done

done > /home/install_pkg.log
```

- Infine ho ripristinato manualmente il file "/var/lib/portage/world".

Mi rendo conto di essermi complicato notevolmente la vita (avrei potuto usare lo stage4) ma ero curioso e avevo un po' di tempo da perdere. Questo metodo mi ha permesso di ripristinare il sistema senza troppi problemi (in realtà ho avuto qualche problema anche se purtroppo non ricordo   :Embarassed:  ). Mi farebbe piacere sapere se potessi automatizzare tutto il procedimento e se mi è sfuggito qualcosa di importante. Grazie in anticipo.

Java

----------

## saverik

io ho risolto bene ed in fretta   :Very Happy: 

https://forums.gentoo.org/viewtopic-t-987276-highlight-.html

----------

## Javaskit

Il progetto FSArchiver è molto interessante; per creare il mio stage4, da SystemRescueCd, ho usato il comando fsarchiver savefs -o -v -z9 -j2 -c - /mnt/backup/gentoo-rootfs.fsa --exclude=/home/javaskit --exclude=/usr/portage/distfiles /dev/sda3 . Speriamo non ci siano problemi in fase di ripristino.

Java

----------

