Come creare e ripristinare istantanee incrementali del disco rigido


13

Uso molto Virtual Box per test di distribuzione / applicazioni.

Una delle funzionalità che adoro di più sono le istantanee delle macchine virtuali, salva lo stato di una macchina virtuale ed è in grado di riportarlo al suo antico splendore se qualcosa che hai fatto è andato storto senza problemi e senza consumare tutto il tuo spazio sul disco rigido.

Sui miei sistemi live so come creare un'immagine 1: 1 del file system ma tutte le soluzioni che conosco creeranno una nuova immagine del file system completo.

Esistono programmi / file system in grado di acquisire un'istantanea di un file system corrente, salvarlo in un'altra posizione ma invece di creare una nuova immagine completa crea backup incrementali?

Per descrivere facilmente ciò che voglio, dovrebbe essere come ddimmagini di un file system, ma invece di un backup completo creerebbe anche un valore incrementale.


Non sto cercando clonezilla, ecc. Dovrebbe funzionare all'interno del sistema stesso senza alcun (o quasi nessuno) intervento da parte dell'utente, ma contenere tutti i dati dei file system. Inoltre non sto cercando un duplicitybackup di tutto il sistema escluso alcune cartelle script + ddper salvare il tuo mbr. Posso farlo da solo, cercando extra finezza.

Sto cercando qualcosa che posso fare prima di apportare enormi modifiche a un sistema e quindi se qualcosa non va o ho bruciato il mio disco rigido dopo aver versato il caffè su di esso, posso semplicemente avviare da un liveCD e ripristinare un'istantanea funzionante su un disco rigido.

Non ha bisogno di essere quotidiano, non ha nemmeno bisogno di un programma. Esegui una volta ogni tanto e lascia che funzioni e preferibilmente basato su RAW e non su copia di file.



Quindi, stai cercando un'applicazione in grado di creare immagini installabili? In caso contrario, perché non preferisci Deja Dup? Se stai chiedendo a un'applicazione di creare immagini installabili, voglio sapere anche quella risposta. Aggiungere preferiti.
heartsmagic

ho appena pubblicato una risposta alla domanda come intitolata ... ma vedo che stai cercando un modo più potenziale per ripristinare il tuo sistema bare metal anziché a livello di file.
cprofitt,

1
Sembra che tu voglia un backup incrementale basato su livello di blocco, non su file system. Oltre a utilizzare un file system che supporta le istantanee, non sono sicuro che ciò che stai chiedendo sia possibile. LVM, BTRFS può essere una possibilità.
cprofitt,

@cprofitt thx per la correzione del titolo, è più corretto.
Bruno Pereira,

@Bruno - fare buoni titoli aiuta a renderlo utile alle persone che verranno dopo per trovare la risposta.
cprofitt,

Risposte:


14

Per spiegare la risposta di cprofitt (poiché la sua risposta è incrementale, come spiegherò) ...

Per prima cosa devi conoscere i collegamenti reali.

I collegamenti fissi puntano ai dati effettivamente presenti sul disco (la posizione fisica) ed è possibile accedere ai dati utilizzando il collegamento reale. Ogni file e directory è un collegamento reale alla posizione dei dati sul disco fisico. Pertanto, se sono presenti due file (hard link) che puntano alla stessa posizione, i dati vengono archiviati una sola volta .


Il processo fornito da cprofitt prevede:

  1. Ruota i backup per crearne uno nuovo. ("Il backup di oggi" di ieri diventa "Backup di ieri", "Backup di ieri" di due giorni fa diventa "Backup di due giorni fa" e così via)

    • L'elenco continua a crescere finché lo desideri, tuttavia nello script ha solo 4 istantanee. (Fa di nuovo l'intero processo per il livello successivo (ad esempio una settimana - "Backup di questa settimana") e ruota quelli, quindi è per questo che ne ha solo 4).
    • Lo spostamento viene eseguito al contrario per impedire la sovrascrittura
  2. Copia l'ultima istantanea che hai fatto (ad esempio "Backup di ieri") sul posto per quella nuova (ad esempio "Backup di oggi"), creando nuovi collegamenti reali ai file esistenti senza copiare il file. Quindi tutti i file nella nuova istantanea puntano nella stessa posizione della precedente .


Un esempio illustrato

Nell'immagine seguente, i file dello stesso colore con lo stesso nome file sono hard link allo stesso file su disco. Qui abbiamo a che fare solo con due istantanee e alcuni file, ma l'esempio si ridimensiona. (Tranne il fatto che sto spostando le istantanee in modo opposto agli script nella risposta di cproffit)

inserisci qui la descrizione dell'immagine

Il processo è questo:

  1. C'è un'istantanea del sistema.

  2. L'istantanea è una copia (creazione di collegamenti reali ai file esistenti)

  3. Rsync viene eseguito per aggiornare l'istantanea. Quando i file vengono modificati, memorizza il nuovo file come nuova copia sul disco rigido (quindi lo snapshot precedente non viene modificato). In questo esempio, il file B è stato modificato. Nota: ora abbiamo solo 1 copia del file A e del file C e due copie del file B memorizzate sul disco rigido

  4. Ruota le istantanee (in questo caso l'istantanea 0 "cade" e viene eliminata e rinomino l'istantanea 1 in istantanea 0)

  5. Copia lo snapshot agin (ripetere il passaggio 2)

  6. Rsync di nuovo. (Ripetere il passaggio 3). Ora abbiamo 1 copia del file A e 2 copie del file B e del file C.


Una versione semplificata del [primo] script (da non eseguire, proprio come un trampolino di lancio) è questa:

#!/bin/bash

# Delete the snapshot we don't want (has 'fallen off')
rm -rf /root/snapshot/home/hourly.3 ;

# Rotate the snapshots by shuffling them back
mv /root/snapshot/home/hourly.2 /root/snapshot/home/hourly.3 ;
mv /root/snapshot/home/hourly.1 /root/snapshot/home/hourly.2 ;

# Copy the snapshot (creating hard links to the existing files)
cp -al /root/snapshot/home/hourly.0 /root/snapshot/home/hourly.1 ;

# Do the rsync ...
# step 4: rsync from the system into the latest snapshot (notice that
# rsync behaves like cp --remove-destination by default, so the destination
# is unlinked first.  If it were not so, this would copy over the other
# snapshot(s) too!
rsync -va --delete /home/ /root/snapshot/home/hourly.0 ;

Ora lo script completo ha la spiegazione completa qui (come cprofitt collegato) ed è più approfondito ma è fondamentalmente come sopra. L'altro script serve per raggruppare le istantanee e l'altra parte della risposta di cprofitt parla del rendere automatico il processo (usando cron) e di verificare che il backup sia andato a buon fine.

Puoi cambiare i nomi, quindi invece delle directory chiamate "ogni ora ..." si chiamano qualcos'altro e lo script viene eseguito manualmente.


Per ripristinare l'intero lotto, copiare l'ultima istantanea (o una precedente) nella directory di cui si stava eseguendo il backup.

Per ripristinare un singolo file che è ancora in un'istantanea, andare all'istantanea e copiarlo nel punto in cui appartiene.

Il supporto di backup può essere un disco rigido esterno (deve essere ext2 / ext3 / ext4). Se tu fossi il backup /(principalmente /boot, /home, /etc /roote /usr) poi, dire ...

  1. Montare l'unità esterna, eseguire il backup e creare l'istantanea più recente.

  2. Smonta l'unità.

  3. Ricorda che hai eliminato un file (anche dal cestino) che volevi.

  4. Collegare l'unità esterna e recuperare il file.

  5. Fai un backup (solo per essere sicuro)

  6. Scollegare l'unità e andare in viaggio ...

  7. Realizza che un laptop e lava non si mescolano.

  8. Con il tuo nuovo laptop che esegue un cd live, formatta l'unità interna, monta l'unità esterna e quindi cp -a /media/external/snapshot-0/* /media/internal-drive(supponendo che lo snapshot-0 sia lo snapshot più recente)

  9. Installa grub sull'MBR (sì, deve essere separato) o usa ddper fare il backup di mbr, come ha detto cprofitt in fondo alla sua risposta.

  10. Reboot.

Lo script deve essere perfezionato (per ottenere solo le cose che desideri) e la procedura precedente presuppone che tu non abbia una /homepartizione. Se ne hai (o hai avuto) crearne uno nuovo sul disco e montarlo in posizione con mount /dev/sdxy /media/external/homeprima di copiarlo.


100 istantanee dd costeranno lo 100 x <average size of snapshot> spazio su disco. 100 di questi costeranno <size of snapshot> + <size of changed files>. Ho usato questo per mettere diverse istantanee di / home (~ 400GB) su un disco da 500GB.
Portablejim

Puoi montare l'immagine del disco virtuale sul tuo filesystem, quindi eseguirne il backup. Vedi superuser.com/questions/158908/… e collegamenti
Portablejim

Come detto, questo è per i miei computer in esecuzione, non una scatola virtuale, la vbox era solo un esempio.
Bruno Pereira,

Domanda aggiornata (alla fine invece di aggiungere un commento).
Portablejim

@Portablejim: Stai scrivendo che il cp sta "preservando i collegamenti reali". Penso che questa frase sia confusa. cp -alsta creando collegamenti fisici ai file di origine invece di copiare i file di origine. Le tue figure dovrebbero anche riflettere che, ad esempio mostrando che i file A nella figura 2 sono lo stesso file.
Daniel Kullmann,

7

Puoi usare rsync.

Listing one: make_snapshot.sh

#!/bin/bash
# ----------------------------------------------------------------------
# mikes handy rotating-filesystem-snapshot utility
# ----------------------------------------------------------------------
# this needs to be a lot more general, but the basic idea is it makes
# rotating backup-snapshots of /home whenever called
# ----------------------------------------------------------------------

unset PATH  # suggestion from H. Milz: avoid accidental use of $PATH

# ------------- system commands used by this script --------------------
ID=/usr/bin/id;
ECHO=/bin/echo;

MOUNT=/bin/mount;
RM=/bin/rm;
MV=/bin/mv;
CP=/bin/cp;
TOUCH=/bin/touch;

RSYNC=/usr/bin/rsync;


# ------------- file locations -----------------------------------------

MOUNT_DEVICE=/dev/hdb1;
SNAPSHOT_RW=/root/snapshot;
EXCLUDES=/usr/local/etc/backup_exclude;


# ------------- the script itself --------------------------------------

# make sure we're running as root
if (( `$ID -u` != 0 )); then { $ECHO "Sorry, must be root.  Exiting..."; exit; } fi

# attempt to remount the RW mount point as RW; else abort
$MOUNT -o remount,rw $MOUNT_DEVICE $SNAPSHOT_RW ;
if (( $? )); then
{
    $ECHO "snapshot: could not remount $SNAPSHOT_RW readwrite";
    exit;
}
fi;


# rotating snapshots of /home (fixme: this should be more general)

# step 1: delete the oldest snapshot, if it exists:
if [ -d $SNAPSHOT_RW/home/hourly.3 ] ; then         \
$RM -rf $SNAPSHOT_RW/home/hourly.3 ;                \
fi ;

# step 2: shift the middle snapshots(s) back by one, if they exist
if [ -d $SNAPSHOT_RW/home/hourly.2 ] ; then         \
$MV $SNAPSHOT_RW/home/hourly.2 $SNAPSHOT_RW/home/hourly.3 ; \
fi;
if [ -d $SNAPSHOT_RW/home/hourly.1 ] ; then         \
$MV $SNAPSHOT_RW/home/hourly.1 $SNAPSHOT_RW/home/hourly.2 ; \
fi;

# step 3: make a hard-link-only (except for dirs) copy of the latest snapshot,
# if that exists
if [ -d $SNAPSHOT_RW/home/hourly.0 ] ; then         \
$CP -al $SNAPSHOT_RW/home/hourly.0 $SNAPSHOT_RW/home/hourly.1 ; \
fi;

# step 4: rsync from the system into the latest snapshot (notice that
# rsync behaves like cp --remove-destination by default, so the destination
# is unlinked first.  If it were not so, this would copy over the other
# snapshot(s) too!
$RSYNC                              \
    -va --delete --delete-excluded              \
    --exclude-from="$EXCLUDES"              \
    /home/ $SNAPSHOT_RW/home/hourly.0 ;

# step 5: update the mtime of hourly.0 to reflect the snapshot time
$TOUCH $SNAPSHOT_RW/home/hourly.0 ;

# and thats it for home.

# now remount the RW snapshot mountpoint as readonly

$MOUNT -o remount,ro $MOUNT_DEVICE $SNAPSHOT_RW ;
if (( $? )); then
{
    $ECHO "snapshot: could not remount $SNAPSHOT_RW readonly";
    exit;
} fi;

e il secondo:

Listing two: daily_snapshot_rotate.sh

#!/bin/bash
# ----------------------------------------------------------------------
# mikes handy rotating-filesystem-snapshot utility: daily snapshots
# ----------------------------------------------------------------------
# intended to be run daily as a cron job when hourly.3 contains the
# midnight (or whenever you want) snapshot; say, 13:00 for 4-hour snapshots.
# ----------------------------------------------------------------------

unset PATH

# ------------- system commands used by this script --------------------
ID=/usr/bin/id;
ECHO=/bin/echo;

MOUNT=/bin/mount;
RM=/bin/rm;
MV=/bin/mv;
CP=/bin/cp;

# ------------- file locations -----------------------------------------

MOUNT_DEVICE=/dev/hdb1;
SNAPSHOT_RW=/root/snapshot;

# ------------- the script itself --------------------------------------

# make sure we're running as root
if (( `$ID -u` != 0 )); then { $ECHO "Sorry, must be root.  Exiting..."; exit; } fi

# attempt to remount the RW mount point as RW; else abort
$MOUNT -o remount,rw $MOUNT_DEVICE $SNAPSHOT_RW ;
if (( $? )); then
{
    $ECHO "snapshot: could not remount $SNAPSHOT_RW readwrite";
    exit;
}
fi;


# step 1: delete the oldest snapshot, if it exists:
if [ -d $SNAPSHOT_RW/home/daily.2 ] ; then          \
$RM -rf $SNAPSHOT_RW/home/daily.2 ;             \
fi ;

# step 2: shift the middle snapshots(s) back by one, if they exist
if [ -d $SNAPSHOT_RW/home/daily.1 ] ; then          \
$MV $SNAPSHOT_RW/home/daily.1 $SNAPSHOT_RW/home/daily.2 ;   \
fi;
if [ -d $SNAPSHOT_RW/home/daily.0 ] ; then          \
$MV $SNAPSHOT_RW/home/daily.0 $SNAPSHOT_RW/home/daily.1;    \
fi;

# step 3: make a hard-link-only (except for dirs) copy of
# hourly.3, assuming that exists, into daily.0
if [ -d $SNAPSHOT_RW/home/hourly.3 ] ; then         \
$CP -al $SNAPSHOT_RW/home/hourly.3 $SNAPSHOT_RW/home/daily.0 ;  \
fi;

# note: do *not* update the mtime of daily.0; it will reflect
# when hourly.3 was made, which should be correct.

# now remount the RW snapshot mountpoint as readonly

$MOUNT -o remount,ro $MOUNT_DEVICE $SNAPSHOT_RW ;
if (( $? )); then
{
    $ECHO "snapshot: could not remount $SNAPSHOT_RW readonly";
    exit;
} fi;

Dopo aver creato lo script per le tue esigenze aggiungilo ai cron job.

crontab -e

aggiungere quanto segue:

0 * / 4 * * * /usr/local/bin/make_snapshot.sh

0 13 * * * /usr/local/bin/daily_snapshot_rotate.sh

Fanno eseguire make_snapshot.sh ogni quattro ore ogni ora e daily_snapshot_rotate.sh da eseguire ogni giorno alle 13:00 (ovvero alle 13:00).

fonte: http://www.mikerubel.org/computers/rsync_snapshots/

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

Se vuoi che funzioni ogni ora, aggiungi un processo cron per ogni ora.

Un'altra possibile opzione sta usando rsnapshot

  1. Installa rsnapshot (disponibile nel centro software)

  2. Configurare rsnapshot e specificare la directory di origine del backup

Aprire /etc/rsnapshot.conf e rimuovere il commento dalle seguenti righe.

# nano /etc/rsnapshot.conf

cmd_cp          /bin/cp
cmd_ssh /usr/bin/ssh
cmd_du          /usr/bin/du
cmd_rsnapshot_diff      /usr/local/bin/rsnapshot-diff
logfile /var/log/rsnapshot
  1. Definire le directory di backup di destinazione in /etc/rsnapshot.conf come mostrato di seguito. In questo esempio,

    / home - directory di origine di cui eseguire il backup localhost / - directory di destinazione in cui verrà archiviato il backup. Nota che questa directory verrà creata nella directory /.snapshots/{internal.n}/ come mostrato nell'ultimo passaggio.

    nano /etc/rsnapshot.conf

    backup / home / localhost /

  2. Test della configurazione di rsnapshot

Eseguire il test di configurazione per assicurarsi che rsnapshot sia configurato correttamente e pronto per eseguire il backup di rsync di Linux.

# rsnapshot configtest
Syntax OK
  1. Verificare la configurazione del backup orario di rsnapshot

È possibile eseguire il backup di directory o file Linux a vari intervalli. Per impostazione predefinita, i backup orari e giornalieri sono configurati.

Verificare la configurazione oraria del backup.

# rsnapshot -t hourly
echo 6490 > /var/run/rsnapshot.pid
mkdir -m 0700 -p /.snapshots/
mkdir -m 0755 -p /.snapshots/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
/.snapshots/hourly.0/localhost/
mkdir -m 0755 -p /.snapshots/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
/.snapshots/hourly.0/localhost/
mkdir -m 0755 -p /.snapshots/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
/usr/local /.snapshots/hourly.0/localhost/
touch /.snapshots/hourly.0/
  1. Verificare la configurazione del backup giornaliero rsnapshot

Verificare che il processo di backup cwrsync rsnapshot giornaliero sia configurato correttamente.

# rsnapshot -t daily
echo 6493 > /var/run/rsnapshot.pid
mkdir -m 0700 -p /.snapshots/
/.snapshots/hourly.5 not present (yet), nothing to copy
  1. Aggiungi voce Crontab per rsnapshot

Dopo aver verificato che le configurazioni di backup orarie e giornaliere di rsync sono state impostate correttamente nell'utility cswrsync rsnapshot, è tempo di impostare questo cucciolo nel crontab come mostrato di seguito.

# crontab -e
0 */4 * * * /usr/local/bin/rsnapshot hourly
30 23 * * * /usr/local/bin/rsnapshot daily

fonte: http://www.thegeekstuff.com/2009/08/tutorial-backup-linux-using-rsnapshot-rsync-utility/

---- Ripristino bare metal

Userei dd e tar per eseguire il ripristino baremetal.

Backup di metadati importanti:

# dd if-/dev/hda of=/backups/mbr bs=512 count=1

Eseguire il backup del sistema operativo:

# mkdir /backups
# mount nfsserver:/backups/<servername> /backups


# cd /
# tar cfz /backups/system.tar.gz --exclude /mnt --exclude /proc --exclude /backups

Personalmente tenderei a mettere offline il mio sistema se volessi creare un file di ripristino baremetal.


2
Tutta la tua risposta sembra molto buona, nessun problema e tutto ma non è quello che sto chiedendo, nessuno dei metodi non ripristinerà l'MBR e ddnon è incrementale. Niente di tutto ciò è ciò che chiedo. L'ultimo 10% potrebbe essere interessante da cercare, ma tutto il resto della discarica di informazioni non lo è.
Bruno Pereira,

I dettagli sopra riguardano il file system (come file system) e ho aggiunto il processo dd per gestire l'MBR.
cprofitt,

3

Esistono 2 modi per eseguire il backup incrementale basato su blocchi

  • Istantanee basate su filesystem
  • Istantanee basate sul programma

Istantanee basate su filesystem

Sia ZFS che BTRFS forniscono snapshot incrementali basati su blocchi ( BTRFS , ZFS (pagina 25) ). Potresti avere un'unità che sincronizzi con ZFS o BTRFS e istantanea.

Esistono anche snapshot LVM (menzionati da cprofitt) che forniscono gli stessi snapshot incrementali basati su blocco.

Istantanee basate sul programma

Esistono diversi programmi di backup , tuttavia alcuni spiccano allo scopo:

So che hai menzionato specificamente che non stai cercando qualcosa di simile alla duplicità, tuttavia ho pensato di poter menzionare alcune funzionalità.

Tuttavia, questi programmi richiedono l'installazione per il ripristino. Il bello di qualcosa come rsync è che quasi tutte le installazioni di Linux hanno rsync (ad es. Manca un piccolo core (una distribuzione da 10 MB)).

Duplicità

Memorizza solo il diff (livello di blocco) e quindi li comprime e li crittografa. Ciò porta a una quantità di archiviazione ancora inferiore rispetto al metodo rsync, tuttavia (almeno per come la vedo io) il file system dovrà essere ricostruito, il che richiederà tempo (se si utilizzano backup incrementali con esso, e dipende dal tempo da quando ultimo backup completo)

La pagina man spiega come funziona.

Rdiff-backup

Un programma client-server che crea, come la duplicità, differisce a livello di blocco, tuttavia memorizza le modifiche dall'ultimo punto di ripristino, quindi l'ultima istantanea è la più veloce da ripristinare. Per tornare indietro nel tempo (non l'ultima istantanea) è necessario analizzare più differenze e quindi è più lento.

Alcune persone confrontano rdiff-backup con rsnapshot (sembra un modo più automatico del mentod rsync). Quasi tutti i how-to si concentrano sull'uso di rdiff sulla rete, tuttavia ne ho trovato uno che menziona come farlo su localhost .


ok mi piace questo, ti interessa descrivere come farlo funzionare con il ripristino delle partizioni? vale a dire, se rompo un disco come ripristinerei il mio sistema completo da un'istantanea senza dover creare le partizioni da solo, ecc. non dovrebbe essere molto dettagliato o includere script, solo alcuni nomi di comando e cosa farebbero.
Bruno Pereira,

Non ho avuto esperienza con questi sistemi, li ho trovati solo facendo delle ricerche usando Google (quindi perché sono solo link). ad es. ho imparato cosa sia duplicityeffettivamente.
Portablejim

3

Dovresti dare un'occhiata a ddar ( homepage ).

È incrementale nel senso di non trasferire le parti identiche dell'istantanea. Non è incrementale nel significato classico della parola, poiché si tratta di istantanee.

Nota: non ho provato questo da solo (ma mi fido dell'autore). Potrebbe non fare quello che ti piacerebbe ottenere immediatamente, ma ci sono ancora soluzioni più simili sulla pagina (ad es. ZFS ), quindi come punto di partenza, potrebbe rivelarsi utile.


1
Sono l'autore di ddar (grazie per la menzione!). Se capisco correttamente la domanda, consegnando a ddar una serie di istantanee LVM farebbe esattamente come richiesto. Come dici tu, si tratta di istantanee piuttosto che incrementali, ma le istantanee avranno lo stesso effetto con il vantaggio che le vecchie istantanee possono essere rimosse a piacimento senza influire su quelle più recenti.
Robie Basak,

@robie Sarei felice di vedere come funzionerebbe, puoi fare una guida molto piccola per me o per qualsiasi utente che potrebbe essere alla ricerca di questo tipo di soluzione?
Bruno Pereira,

1

Penso che puoi farlo con LVM è solo teorico e sprecherà una grande quantità di disco rigido. La mia teoria è che puoi far vivere il tuo sistema di root su un volume logico, quindi se vuoi fare un test puoi creare uno snapshot e riavviare la macchina usando il nuovo volume.

Le snapshot LVM richiedono il volume originale per funzionare. Questo perché il nuovo volume contiene la differenza tra l'istantanea e il vero filesystem.

Se lasci il sistema in questo stato, inizierai a sprecare spazio su disco man mano che il nuovo filesystem cambia. Non so se c'è un modo per consolidare il filesystem istantaneo e definitivo. Sicuramente puoi dd su un altro volume logico, ma per questo avrai bisogno del doppio dello spazio del tuo filesystem più la differenza tra il tuo "punto di recupero" e lo stato corrente.

E tutto ciò richiede il riavvio ed è tutt'altro che automatico.

Si presume anche che diversi file system moderni vadano in questo modo, come zfs su sistemi solaris o btrfs sperimentali.


1

Questo è un po 'sopra la mia testa, ma suona come parte di ciò che vuoi fare è fare dei backup parziali di file binari (come file di immagini di partizione). C'è un pacchetto progettato per farlo (ne ho appena letto - non l'ho provato.)

Dai un'occhiata a bup.

https://github.com/apenwarr/bup

Potrebbe darti alcune idee.

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.