Qu'est-ce qui est le plus important pour les sauvegardes? C'est vrai, la reproductibilité. --link-dest
donc un vélo sur le genou et sur l'option --link-dest
de rsync . Notre vélo n'aura pas de structure de données restituée comme un git, ni un tas de backends comme la duplicité. Mais nous pouvons restaurer son travail de mémoire, même sous stress.
L'option --link-dest
vous permet de spécifier la version de sauvegarde précédente sur laquelle rsync mettra des liens durs si les fichiers n'ont pas changé depuis la dernière fois.
Autrement dit, rsync --link-dest=/var/backups/www.1 remote:/var/www /var/backups/www.0
copie uniquement ces fichiers du serveur distant dans le dossier /var/backups/www.0 qui ont changé, mais pour le reste, il mettra un lien dur dans /var/backups/www.1
Maintenant, l'astuce est petite: encapsulez l'appel rsync
dans du code qui décale les sauvegardes d'une /var/backups/www.0
et libère de l'espace pour une nouvelle sauvegarde dans /var/backups/www.0
, et supprime également la dernière copie de / /var/backups/www.9
.
Ce code renommera /var/backups/www.1
en /var/backups/www.2
et /var/backups/www.0
renommera /var/backups/www.1
.
Il ne reste plus qu'à exécuter rsync --link-dest=/var/backups/www.1 remote:/var/www /var/backups/www.0
, en ajoutant des options à votre goût. Ainsi, l'option --delete
supprime les fichiers de la dernière copie ( rsync
ne le fait pas par défaut), l'option -C
ignore les dossiers .svn
, .git
, les artefacts de patch
et certains autres types courants de fichiers temporaires.
Tous ensemble:
En dehors des crochets se trouvait la gestion des erreurs (voir set -e
) et les notifications, et le nombre de copies peut être personnalisé.
Mais ça marche!