[archlinux] snapshot & btrfs

Pubblicità

e_ale92

Utente Èlite
Messaggi
17,011
Reazioni
5,013
Punteggio
228
salve ragazzi,

sono alla ricerca del "miglior" modo per eseguire/ripristinare gli snapshot eseguiti sotto btrfs.

fino ad ora ho snappato con timeshift-btrfs, ma non è ufficialmente supportato e per di più non mi ha salvato dal casino, costringendomi ad una formattazione totale :muro:

configurazione:
@
@home

vorrei:
1. snappare solo @ corrispondente a /
2. gestire il mount e l'umount della cartella (es.) /mnt/snapshot contente gli snapshot, in modo che se / venga piallata, gli snapshot restino al sicuro (timeshift-btrfs gestiva in automatico questa cosa).
3. automatizzare il più possibile il tutto. snapshot weekly, pulizia automatica degli snapshot molto vecchi e snapshot ad ogni aggiornamento del sistema (pacaur - Syu).

grazie in anticipo :)
 
salve ragazzi,

sono alla ricerca del "miglior" modo per eseguire/ripristinare gli snapshot eseguiti sotto btrfs.

fino ad ora ho snappato con timeshift-btrfs, ma non è ufficialmente supportato e per di più non mi ha salvato dal casino, costringendomi ad una formattazione totale :muro:

configurazione:
@
@home

vorrei:
1. snappare solo @ corrispondente a /
2. gestire il mount e l'umount della cartella (es.) /mnt/snapshot contente gli snapshot, in modo che se / venga piallata, gli snapshot restino al sicuro (timeshift-btrfs gestiva in automatico questa cosa).
3. automatizzare il più possibile il tutto. snapshot weekly, pulizia automatica degli snapshot molto vecchi e snapshot ad ogni aggiornamento del sistema (pacaur - Syu).

grazie in anticipo :)
Provato snapper?

Inviato dal mio ALE-L21 utilizzando Tapatalk
 
Fatti uno script dfa mettere sotto systemd-timer.

snapshot automatici, manuali e pulizia
Questo script ci permette di automatizzare, in modo semplice, la creazione di snapshot, in base al tempo.

Se invece vogliamo qualcosa da lanciare una volta ogni tanto, possiamo utilizzare qualcosa di simile:

#!/bin/bash
pool_btrfs=`mount -t btrfs | grep " / " | cut -d " " -f 1` && \
tmp=`mktemp -p /tmp -d bsnap-XXXX` && \
mount $pool_btrfs $tmp && \
btrfs subvol snapshot $tmp/@ $tmp/@bsnap_`date '+%Y-%m-%d_%H.%M'`${1} && \
umount $tmp && \
rmdir $tmp
view rawbsnap.shhosted with ❤ by GitHub
Inoltre potremmo snellire la lista dei backup automatici fatti da apt-btrfs-snapshot con uno script del genere, magari mettendolo in cron anziché usando gli hook di APT.

Fonte: http://nerdrug.org/blog/btrfs-in-debian-con-apt-btrfs-snapshot/
 
Qui altri metodi, script: https://btrfs.wiki.kernel.org/index.php/UseCases#Snapshots_and_subvolumes

E questo(ovviamente lo personalizzi per il subvol che vuoi, nel tuo caso: @ o nomedelsubvol che dai a root:
ve already done something similar. I take hourly, daily, weekly, and
monthly
snapshots of my /home subvolume. Here's the script I've created for this:
Codice:
#! /bin/bash

if [ "$#" -ne 2 ]; then
   echo Usage $0 SNAPSHOT_PREFIX NUM_SNAPSHOTS
   exit 1
fi

SNAPS=/var/lib/btrfs-root/__snapshot/home

btrfs subvolume snapshot -r /home $SNAPS/$1_$(date +%F_%T.%N)

num_snaps=$(ls -1d $SNAPS/$1_* | sort | wc -l)

if [ "$num_snaps" -gt "$2" ]; then
   let over=$num_snaps-$2
   ls -1d $SNAPS/$1_* | head -n $over | while read s; do
      btrfs subvolume delete $s
   done
fi


Here's my crontab:
0 * * * * /usr/local/bin/snapshot hourly 6
0 0 * * * /usr/local/bin/snapshot daily 7
0 0 * * 0 /usr/local/bin/snapshot weekly 4
--
-=[dave]=-

Entropy isn't what it used to be.
 
Provato snapper?

Inviato dal mio ALE-L21 utilizzando Tapatalk
ni... quando ho fatto i test su un disco di prova, non sono riuscito a ripristinare xD

@lele.deb (abbi pazienza) e @Mario Liguori
snapper andrebbe bene. senza ricorrere a script vari, ad automatizzare non sarebbe un problema... dovrei gestire la rimozione degli snapshot vecchi, ma non è un problema.
il problema grosso (e che ancora non mi è del tutto chiaro di btrfs) è come gestire l'umount.
non ho capito come e dove cavolo snappare e cosa smontare e montare all'occorrenza :grrrr: :muro:
 
Devi montare la radice, in modo da snappare il suo subvol: radice -> subvol -> snap; ripristino: snap -> subvol: ma devi montare la radice: /dev/sda1 in modo da avere tutti i subvol, quindi poi sposti il subvol snap con il subvol attuale.
Gestione avanzata
Normalmente la root di sistema viene collocata in un subvolume (es.: @), per poter effettuare opzioni di snapshot etc e consigliabile montare il filesystem con l'opzione subvolid=0. Nella directory di mount saranno visibili tutti i subvolumi e le snapshot della partizione e sarà quindi possibile effettuare tutte le operazioni indicate nei passaggi successivi.

Ecco un /etc/fstab di esempio

LABEL=ROOT / btrfs defaults,compress=lzo,subvol=@ 0 0
LABEL=ROOT /home btrfs defaults,compress=lzo,subvol=@home 0 0
LABEL=ROOT /mnt/btrfs btrfs defaults,noauto,subvolid=0,compress=lzo 0 0
 
con l'fstab di esempio, monto @e @home in /mnt/btrfs, snappo in /mnt/btrfs e quando ho finito, per mettere al sicuro gli snapshot fatti, smonto /mnt/btrfs... giusto?

perché se è così, ho capito come gestore tutto... finalmente!!! :cry:
 
con l'fstab di esempio, monto @e @home in /mnt/btrfs, snappo in /mnt/btrfs e quando ho finito, per mettere al sicuro gli snapshot fatti, smonto /mnt/btrfs... giusto?

perché se è così, ho capito come gestore tutto... finalmente!!! :cry:
Con fstab non devi montare i subvol, ma la radice che contengono i subvol. Ovviamente tu avvia come sistema i subvol.
Sistema di avvio e dove tu lavori sono i subvol: @ e @home
Tu per far vedere i subvol, devi montare la radice, che è: /dev/sda1 o sda2 etc... Nell'esempio lui usa i LABEL.
 
Con fstab non devi montare i subvol, ma la radice che contengono i subvol. Ovviamente tu avvia come sistema i subvol.
Sistema di avvio e dove tu lavori sono i subvol: @ e @home
Tu per far vedere i subvol, devi montare la radice, che è: /dev/sda1 o sda2 etc... Nell'esempio lui usa i LABEL.
aspetta lele, ho scritto male perché pensavo ad una cosa e ne ho scritta un'altra xD

io voglio semplicemente smontare il posto dove faccio gli snapshot, così da non brasarli in caso di fesserie.

in fase di installazione credo @ e @home e li metto in fstab.

poi dove snappo? come smonto il posto in cui ho snappato?

io avevo pensato di creare un subvol @snapshot in cui salvare gli snap di @ e @home e montare manualmente @snapshot in /mnt/snapshot SOLO all'occorrenza. ha senso questa cosa?

p. s. ti ricordo che io ho una partizione unica e un solo disco ssd m2
 
Ed è quello che ha fatto nell'esempio:

Codice:
LABEL=ROOT /mnt/btrfs btrfs defaults,noauto,subvolid=0,compress=lzo 0 0
Guarda l'opzione "noauto".
Monti la radice, fai lo snap e smonti.
Codice:
I want to be able to do rollbacks with Btrfs

To roll back a subvolume to an earlier one, you simply need to replace one with the other. There are several ways of achieving this, depending on where you have the subvolumes, and how they're accessed (mounted or not mounted).
If your snapshots are kept alongside the original subvolume, say:
/media/btrfs
        |--- @home
        `--- snapshots
              `--- @home-20170105
then you can simply rename the snapshots:
# cd /media/btrfs
# mv @home @home.old
# mv snapshots/@home-20170105 @home
If you want to keep the snapshot, or it is read-only, make another read/write snapshot instead:
# cd /media/btrfs
# mv @home @home.old
# btrfs sub snap snapshots/@home-20170105 @home
After doing either of these, you will need to unmount and remount the subvol:
# umount /home
# mount /home
Obviously, if this is your root subvol (mounted at /), then you will have to reboot in order to do this last step.
 
salve ragazzi :)

ho installato arch da zero, ma sono fermo al sistema di snapshot.

il mio fstab è questo. l'idea era quella di montare @snapshot in /mnt/snapshot e snappare lì tutto, poi smontare /mnt/snapshot e fine.

#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
#
#
# UUID=038bc12a-a751-4264-8861-20cbe428e5ca LABEL=archlinux
/dev/sda2 / btrfs rw,relatime,compress=lzo,ssd,space_cache,subvolid=257,subvol=/@,subvol=@ 0 0


# UUID=038bc12a-a751-4264-8861-20cbe428e5ca LABEL=archlinux
/dev/sda2 /home btrfs rw,relatime,compress=lzo,ssd,space_cache,subvolid=258,subvol=/@home,subvol=@home 0 0


# UUID=038bc12a-a751-4264-8861-20cbe428e5ca LABEL=archlinux
/dev/sda2 /snapshot btrfs rw,relatime,noauto,compress=lzo,ssd,space_cache,subvolid=259,subvol=/@snapshot,subvol=@snapshot 0 0


# UUID=BF0E-A07C
/dev/sda1 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2

i dubbi però sono nati all'atto pratico.

1. come monto @snapshot in /mnt/snapshot?
2. come gli dico di snappare in /mnt/snapshot? per me non è un problema snappare con l'utility di btrfs (btrfs-prog)
3. ha senso aver creato @snapshot? io credevo di sì, ma ora non ne sono più sicuro. potrei banalmente montare /dev/sda2 in /mnt/snapshot e snappare lì @ e @home... senza creare @snapshot. oppure poi ci sono problemi in caso di ignorante rm -r / ? u.u
4. riservato xD
 
salve ragazzi :)

ho installato arch da zero, ma sono fermo al sistema di snapshot.

il mio fstab è questo. l'idea era quella di montare @snapshot in /mnt/snapshot e snappare lì tutto, poi smontare /mnt/snapshot e fine.



i dubbi però sono nati all'atto pratico.

1. come monto @snapshot in /mnt/snapshot?
2. come gli dico di snappare in /mnt/snapshot? per me non è un problema snappare con l'utility di btrfs (btrfs-prog)
3. ha senso aver creato @snapshot? io credevo di sì, ma ora non ne sono più sicuro. potrei banalmente montare /dev/sda2 in /mnt/snapshot e snappare lì @ e @home... senza creare @snapshot. oppure poi ci sono problemi in caso di ignorante rm -r / ? u.u
4. riservato xD
l'opzione "ssd,space_cache" sono inutili, perché si abilitano in automatico, il primo al rilevamento dell'ssd, il secondo è un opzione di default.
Ma perché creare un subvol per gli snapshot? Non è più semplice montare la radice su /mnt/snapbtrfs e snappare @home o @ e poi smontare?
 
l'opzione "ssd,space_cache" sono inutili, perché si abilitano in automatico, il primo al rilevamento dell'ssd, il secondo è un opzione di default.
Ma perché creare un subvol per gli snapshot? Non è più semplice montare la radice su /mnt/snapbtrfs e snappare @home o @ e poi smontare?
quell'fstab è quello generato di default da arch :)

beh sì... è la stessa cosa che ho pensato io. a questo punto lo rimuovo e via :patpat:

per le altre domande?
 
Pubblicità
Pubblicità
Indietro
Top