131 lines
2.8 KiB
Python
131 lines
2.8 KiB
Python
#/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# Fichier python de gestion des backups
|
|
#
|
|
# Auteur : Pierre-Elliott Bécue <becue@crans.org>
|
|
# 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))}
|