#/usr/bin/env python # -*- coding: utf-8 -*- # # Fichier python de gestion des backups # # Auteur : Pierre-Elliott Bécue # Licence : GPLv3 # Ne faites jamais include("backups") dans ce fichier ! # Le cas échéant, vous allez faire un include cyclique (l'un des deux # est un lien symbolique de l'autre). import collections # Liste des hosts, pourrait éventuellement être calculée au runtime # via les MetaData RsyncHosts = [ "asterisk", "babar", "baldrick", "bcfg2", "cas", "charybde", "dhcp", "eap", "ethercalc", 'ft', 'fz', "geet", "horde", "irc", "isc", "kdell", "kenobi", "komaz", "nat64", "nem", "news", "niomniom", "o2", "owl", "pea", "radius", "redisdead", "rezosup", "roundcube", "routeur", "sable", "sogo", "thot", "titanic", "tracker", "vert", # "vo", trop de bordel, rien de critique "xmpp", "ytrap-llatsni", "zamok", "zbee", ] # RsyncHostsToBackup : dictionnaire d'hôtes de la forme # { "hote" : { # 'nomdepartochecool' : 'emplacement de partoche cool', # } # } # Configs courantes pour les partitions à copier RsyncClassicalDirs = { 'slash' : '/', 'var' : '/var', } # Configs spécifiques des partitions à copier pour chaque hôte # copié par rsync RsyncHostsToBackup = collections.defaultdict(dict) RsyncHostsToBackup['ft'] = { 'pve' : '/etc/pve', } RsyncHostsToBackup['fz'] = { 'pve' : '/etc/pve', } RsyncHostsToBackup['geet'] = { 'git' : '/git', 'gitlab' : '/gitlab', } RsyncHostsToBackup['kdell'] = { 'pve' : '/etc/pve', } RsyncHostsToBackup['news'] = { 'news-spool' : '/var/spool/news', } RsyncHostsToBackup['niomniom'] = { 'www' : '/var/local', } RsyncHostsToBackup['redisdead'] = { 'mailman' : '/var/lib/mailman', } RsyncHostsToBackup['thot'] = { 'boot' : '/boot', } RsyncHostsToBackup['zamok'] = { 'boot' : '/boot', } # Certaines machines n'ont pas de /var à part. # On vire avec ce dico RsyncHostsToExclude = collections.defaultdict(list) RsyncHostsToExclude["asterisk"] = [ "var", ] RsyncHostsToExclude["dhcp"] = [ "var", ] RsyncHostsToExclude["ytrap-llatsni"] = [ "var", ] # Génération des 26 partitions de backup pour les homes. HomeHosts = ["home-" + lettre for lettre in map(chr, range(97, 123))] # Oui, c'est gore, vu que /home n'est qu'une seule partition physique, # il faut enlever à la main chaque lettre de l'alphabet. :'( HomeExclude = { "home-" + lettre : [ "/" + caractere + "*" for caractere in map(chr, range(97, 123)) if caractere != lettre] for lettre in map(chr, range(97, 123))}