[enh] Add system backup and restore hooks

This commit is contained in:
kload 2014-10-25 18:43:31 +02:00
parent 0608461482
commit 796e53bf1f
21 changed files with 173 additions and 0 deletions

View file

@ -43,6 +43,8 @@ def backup():
# Create directory
try: os.listdir(backup_dir)
except OSError: os.makedirs(backup_dir)
os.system('chmod 755 /home/yunohost.backup /home/yunohost.backup/tmp')
os.system('chown -hR admin: %s' % backup_dir)
# Run hook
hook_callback('backup', [backup_dir])

View file

@ -0,0 +1,7 @@
#!/bin/bash
backup_dir="$1/mysql"
mkdir -p $backup_dir
mysqlpwd=$(sudo cat /etc/yunohost/mysql)
sudo mysqldump -uroot -p"$mysqlpwd" mysql > $backup_dir/mysql.sql

View file

@ -0,0 +1,6 @@
#!/bin/bash
backup_dir="$1/ssowat"
mkdir -p $backup_dir
sudo cp -a /etc/ssowat/* $backup_dir/

View file

@ -0,0 +1,6 @@
#!/bin/bash
backup_dir="$1/home"
mkdir -p $backup_dir
sudo rsync -a --exclude='/yunohost*' /home/ $backup_dir/

View file

@ -0,0 +1,6 @@
#!/bin/bash
backup_dir="$1/yunohost"
mkdir -p $backup_dir
sudo cp -a /etc/yunohost/* $backup_dir/

View file

@ -0,0 +1,6 @@
#!/bin/bash
backup_dir="$1/mail"
mkdir -p $backup_dir
sudo cp -a /var/mail/* $backup_dir/

View file

@ -0,0 +1,7 @@
#!/bin/bash
backup_dir="$1/xmpp"
mkdir -p $backup_dir/{etc,var}
sudo cp -a /etc/metronome/* $backup_dir/etc/
sudo cp -a /var/lib/metronome/* $backup_dir/var/

View file

@ -0,0 +1,6 @@
#!/bin/bash
backup_dir="$1/nginx"
mkdir -p $backup_dir
sudo cp -a /etc/nginx/conf.d/* $backup_dir/

View file

@ -0,0 +1,6 @@
#!/bin/bash
backup_dir="$1/cron"
mkdir -p $backup_dir
sudo cp -a /etc/cron.d/yunohost* $backup_dir/

View file

@ -0,0 +1,9 @@
#!/bin/bash
backup_dir="$1/ldap"
mkdir -p $backup_dir
sudo cp -a /etc/ldap/slapd.conf $backup_dir/
slapcat -l $backup_dir/slapcat.ldif.raw
egrep -v "^entryCSN:" < $backup_dir/slapcat.ldif.raw > $backup_dir/slapcat.ldif
rm -f $backup_dir/slapcat.ldif.raw

View file

@ -0,0 +1,6 @@
#!/bin/bash
backup_dir="$1/ssh"
mkdir -p $backup_dir
sudo cp -a /etc/ssh/* $backup_dir/

View file

@ -0,0 +1,7 @@
#!/bin/bash
backup_dir="$1/mysql"
mysqlpwd=$(sudo cat /etc/yunohost/mysql)
sudo mysql -uroot -p"$mysqlpwd" mysql < $backup_dir/mysql.sql
sudo mysqladmin flush-privileges -p"$mysqlpwd"

View file

@ -0,0 +1,5 @@
#!/bin/bash
backup_dir="$1/ssowat"
sudo cp -a $backup_dir/* /etc/ssowat/

View file

@ -0,0 +1,5 @@
#!/bin/bash
backup_dir="$1/home"
sudo cp -a $backup_dir/* /home/

View file

@ -0,0 +1,11 @@
#!/bin/bash
backup_dir="$1/yunohost"
sudo cp -a $backup_dir/* /etc/yunohost/
sudo yunohost app ssowatconf
sudo yunohost firewall reload
# Reload interface name
sudo rm /etc/yunohost/interface
sudo apt-get install --reinstall -y yunohost-config-others

View file

@ -0,0 +1,9 @@
#!/bin/bash
backup_dir="$1/mail"
sudo cp -a $backup_dir/* /var/mail/
# Restart services to use migrated certs
sudo service postfix restart
sudo service dovecot restart

View file

@ -0,0 +1,9 @@
#!/bin/bash
backup_dir="$1/xmpp"
sudo cp -a $backup_dir/etc/* /etc/metronome/
sudo cp -a $backup_dir/var/* /var/lib/metronome/
# Restart to apply new conf and certs
sudo service metronome restart

View file

@ -0,0 +1,8 @@
#!/bin/bash
backup_dir="$1/nginx"
sudo cp -a $backup_dir/* /etc/nginx/conf.d/
# Restart to use new conf and certs
sudo service nginx restart

View file

@ -0,0 +1,8 @@
#!/bin/bash
backup_dir="$1/cron"
sudo cp -a $backup_dir/* /etc/cron.d/
# Restart just in case
sudo service cron restart

View file

@ -0,0 +1,38 @@
#!/bin/bash
backup_dir="$1/ldap"
if [ -z "$2" ]; then
# We need to execute this script as root, since the ldap
# service will be shut down during the operation (and sudo
# won't be available)
sudo bash $(pwd)/$0 $1 sudoed
else
service slapd stop
# Backup old configuration
mv /var/lib/ldap /var/lib/ldap.old
# Recreate new DB folder
mkdir /var/lib/ldap
chown openldap: /var/lib/ldap
chmod go-rwx /var/lib/ldap
# Restore LDAP configuration (just to be sure)
cp -a $backup_dir/slapd.conf /etc/ldap/slapd.conf
# Regenerate the configuration
rm -rf /etc/ldap/slapd.d/*
slaptest -u -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d
cp -rfp /var/lib/ldap.old/DB_CONFIG /var/lib/ldap
# Import the database
slapadd -l $backup_dir/slapcat.ldif
# Change permissions and restart slapd
chown openldap: /var/lib/ldap/*
service slapd start
rm -rf /var/lib/ldap.old
fi

View file

@ -0,0 +1,6 @@
#!/bin/bash
backup_dir="$1/ssh"
sudo cp -a $backup_dir/* /etc/ssh/
sudo service ssh restart