mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
[enh] Add system backup and restore hooks
This commit is contained in:
parent
0608461482
commit
796e53bf1f
21 changed files with 173 additions and 0 deletions
|
@ -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])
|
||||
|
|
7
hooks/backup/11-system_mysql
Normal file
7
hooks/backup/11-system_mysql
Normal 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
|
6
hooks/backup/14-system_ssowat
Normal file
6
hooks/backup/14-system_ssowat
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
backup_dir="$1/ssowat"
|
||||
mkdir -p $backup_dir
|
||||
|
||||
sudo cp -a /etc/ssowat/* $backup_dir/
|
6
hooks/backup/17-system_home
Normal file
6
hooks/backup/17-system_home
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
backup_dir="$1/home"
|
||||
mkdir -p $backup_dir
|
||||
|
||||
sudo rsync -a --exclude='/yunohost*' /home/ $backup_dir/
|
6
hooks/backup/20-system_yunohost
Normal file
6
hooks/backup/20-system_yunohost
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
backup_dir="$1/yunohost"
|
||||
mkdir -p $backup_dir
|
||||
|
||||
sudo cp -a /etc/yunohost/* $backup_dir/
|
6
hooks/backup/23-system_mail
Normal file
6
hooks/backup/23-system_mail
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
backup_dir="$1/mail"
|
||||
mkdir -p $backup_dir
|
||||
|
||||
sudo cp -a /var/mail/* $backup_dir/
|
7
hooks/backup/26-system_xmpp
Normal file
7
hooks/backup/26-system_xmpp
Normal 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/
|
6
hooks/backup/29-system_nginx
Normal file
6
hooks/backup/29-system_nginx
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
backup_dir="$1/nginx"
|
||||
mkdir -p $backup_dir
|
||||
|
||||
sudo cp -a /etc/nginx/conf.d/* $backup_dir/
|
6
hooks/backup/32-system_cron
Normal file
6
hooks/backup/32-system_cron
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
backup_dir="$1/cron"
|
||||
mkdir -p $backup_dir
|
||||
|
||||
sudo cp -a /etc/cron.d/yunohost* $backup_dir/
|
9
hooks/backup/5-system_ldap
Normal file
9
hooks/backup/5-system_ldap
Normal 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
|
6
hooks/backup/8-system_ssh
Normal file
6
hooks/backup/8-system_ssh
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
backup_dir="$1/ssh"
|
||||
mkdir -p $backup_dir
|
||||
|
||||
sudo cp -a /etc/ssh/* $backup_dir/
|
7
hooks/restore/11-system_mysql
Normal file
7
hooks/restore/11-system_mysql
Normal 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"
|
5
hooks/restore/14-system_ssowat
Normal file
5
hooks/restore/14-system_ssowat
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
backup_dir="$1/ssowat"
|
||||
|
||||
sudo cp -a $backup_dir/* /etc/ssowat/
|
5
hooks/restore/17-system_home
Normal file
5
hooks/restore/17-system_home
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
backup_dir="$1/home"
|
||||
|
||||
sudo cp -a $backup_dir/* /home/
|
11
hooks/restore/20-system_yunohost
Normal file
11
hooks/restore/20-system_yunohost
Normal 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
|
9
hooks/restore/23-system_mail
Normal file
9
hooks/restore/23-system_mail
Normal 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
|
9
hooks/restore/26-system_xmpp
Normal file
9
hooks/restore/26-system_xmpp
Normal 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
|
8
hooks/restore/29-system_nginx
Normal file
8
hooks/restore/29-system_nginx
Normal 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
|
8
hooks/restore/32-system_cron
Normal file
8
hooks/restore/32-system_cron
Normal 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
|
38
hooks/restore/5-system_ldap
Normal file
38
hooks/restore/5-system_ldap
Normal 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
|
6
hooks/restore/8-system_ssh
Normal file
6
hooks/restore/8-system_ssh
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
backup_dir="$1/ssh"
|
||||
|
||||
sudo cp -a $backup_dir/* /etc/ssh/
|
||||
sudo service ssh restart
|
Loading…
Add table
Reference in a new issue