Je suis un peu familier avec la façon d'utiliser tar
l' --listed-incremental
indicateur 's pour effectuer des sauvegardes incrémentielles. Le résultat final est un backup-0
fichier contenant la première sauvegarde complète backup-1
, puis backup-2
,, ..., backup-x
avec les modifications dans l'ordre des sauvegardes.
Dans le passé, j’utilisais rsync
des liens physiques pour effectuer des sauvegardes à backup-0
l’état actuel et chaque backup-x
dossier contient les fichiers spécifiques à cette sauvegarde. Fondamentalement, ce qui est décrit http://www.mikerubel.org/computers/rsync_snapshots/ et http://www.admin-magazine.com/Articles/Using-rsync-for-Backups/(offset) .
Je veux imiter cette fonctionnalité avec le goudron. Je ne peux pas utiliser de liens physiques, car les fichiers tar seront finalement téléchargés vers un fournisseur de cloud qui ne gère pas / ne comprend pas les liens et ce qui ne l’est pas. Je souhaite également tarer les sauvegardes, car je peux également les chiffrer avant leur téléchargement dans le nuage.
L’idée est donc d’avoir une liste croissante de fichiers comme celle-ci:
backup-0.tar.bz2
- ceci est la sauvegarde actuelle et sera la plus grande parce que c'est une sauvegarde complètebackup-1.tar.bz2
- Ceci est la sauvegarde d'hier, mais il ne contiendra que les fichiers différents de ce qui se trouve dans current (backup-0.tar.bz2
)backup-2.tar.bz2
- Ceci est la sauvegarde d'il y a deux jours mais il ne contiendra que les fichiers différents d'hier (backup-1.tar.bz2
)backup-3.tar.bz2
- ...backup-4.tar.bz2
- ...backup-5.tar.bz2
- ...
Si cela n'a pas de sens, espérons-le.
Première fois:
$ touch /tmp/file1
$ touch /tmp/file2
- faire
backup-0.tar.bz2
À ce stade backup-0.tar.bz2
a /tmp/file1
et /tmp/file2
.
Deuxième fois:
$ touch /tmp/file3
$ rm /tmp/file2
- ..do la magie
À ce point:
backup-0.tar.bz2
a/tmp/file1
et/tmp/file3
backup-1.tar.bz2
a/tmp/file2
; il n'a pasfile1
parce qu'il n'a pas changé il est donc enbackup-0.tar.bz2
Troisième fois:
$ touch /tmp/file1
$ touch /tmp/file4
- ..do la magie
À ce point:
backup-0.tar.bz2
a/tmp/file1
,/tmp/file3
et/tmp/file4
backup-1.tar.bz2
a/tmp/file1
parce qu'il a été changébackup-2.tar.bz2
a/tmp/file2
Ainsi:
| | first time | second time | third time |
|-------|------------|-------------|-------------------------|
| file1 | backup-0 | backup-0 | backup-0 and backup-1 |
| file2 | backup-0 | backup-1 | backup-2 |
| file3 | | backup-0 | backup-0 |
| file4 | | | backup-0 |
Je pensais que c'était une façon de l'aborder, mais cela me semblait horriblement inefficace. Peut-être que je pourrais utiliser des fonctionnalités / drapeaux qui rendraient cela plus efficace.
- première fois = prendre
backup-0
- deuxième fois
- renommer
backup-0
enbackup-1
- prendre
backup-0
- enlever tout ce
backup-1
qui correspondbackup-0
- renommer
- troisième fois
- renommer
backup-1
enbackup-2
- renommer
backup-0
enbackup-1
- prendre
backup-0
- enlever tout ce
backup-1
qui correspondbackup-0
- renommer
- quatrième fois
- renommer
backup-2
enbackup-3
- renommer
backup-1
enbackup-2
- renommer
backup-0
enbackup-1
- prendre
backup-0
- enlever tout ce
backup-1
qui correspondbackup-0
- renommer
Je pense que c'est la dernière étape (supprimer tout ce backup-1
qui correspond backup-0
) qui est inefficace.
Ma question est, comment puis-je faire cela? Si je l'utilise tar
, --listed-incremental
ce sera l'inverse de ce que j'essaie.
tar
,--listed-incremental
ce sera l'inverse de ce que j'essaie.