mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Merge pull request #1185 from YunoHost/less-backup-madness
Don't backup stuff that ain't relevant for backup
This commit is contained in:
commit
09069628fe
30 changed files with 124 additions and 218 deletions
0
data/hooks/backup/05-conf_ldap
Executable file → Normal file
0
data/hooks/backup/05-conf_ldap
Executable file → Normal file
|
@ -1,17 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Exit hook on subcommand error or unset variable
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
# Source YNH helpers
|
|
||||||
source /usr/share/yunohost/helpers
|
|
||||||
|
|
||||||
# Backup destination
|
|
||||||
backup_dir="${1}/conf/ssh"
|
|
||||||
|
|
||||||
# Backup the configuration
|
|
||||||
if [ -d /etc/ssh/ ]; then
|
|
||||||
ynh_backup "/etc/ssh" "$backup_dir"
|
|
||||||
else
|
|
||||||
echo "SSH is not installed"
|
|
||||||
fi
|
|
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Exit hook on subcommand error or unset variable
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
# Source YNH helpers
|
|
||||||
source /usr/share/yunohost/helpers
|
|
||||||
|
|
||||||
# Backup destination
|
|
||||||
backup_dir="${1}/conf/ssowat"
|
|
||||||
|
|
||||||
# Backup the configuration
|
|
||||||
ynh_backup "/etc/ssowat" "$backup_dir"
|
|
0
data/hooks/backup/17-data_home
Executable file → Normal file
0
data/hooks/backup/17-data_home
Executable file → Normal file
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Exit hook on subcommand error or unset variable
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
# Source YNH helpers
|
|
||||||
source /usr/share/yunohost/helpers
|
|
||||||
|
|
||||||
# Backup destination
|
|
||||||
backup_dir="${1}/conf/ynh/firewall"
|
|
||||||
|
|
||||||
# Backup the configuration
|
|
||||||
ynh_backup "/etc/yunohost/firewall.yml" "${backup_dir}/firewall.yml"
|
|
0
data/hooks/backup/21-conf_ynh_certs
Executable file → Normal file
0
data/hooks/backup/21-conf_ynh_certs
Executable file → Normal file
|
@ -1,9 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
source /usr/share/yunohost/helpers
|
|
||||||
ynh_abort_if_errors
|
|
||||||
YNH_CWD="${YNH_BACKUP_DIR%/}/conf/dkim"
|
|
||||||
mkdir -p "$YNH_CWD"
|
|
||||||
cd "$YNH_CWD"
|
|
||||||
|
|
||||||
ynh_backup --src_path="/etc/dkim"
|
|
0
data/hooks/backup/23-data_mail
Executable file → Normal file
0
data/hooks/backup/23-data_mail
Executable file → Normal file
|
@ -1,14 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Exit hook on subcommand error or unset variable
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
# Source YNH helpers
|
|
||||||
source /usr/share/yunohost/helpers
|
|
||||||
|
|
||||||
# Backup destination
|
|
||||||
backup_dir="${1}/conf/xmpp"
|
|
||||||
|
|
||||||
# Backup the configuration
|
|
||||||
ynh_backup /etc/metronome "${backup_dir}/etc"
|
|
||||||
ynh_backup /var/lib/metronome "${backup_dir}/var"
|
|
13
data/hooks/backup/27-data_xmpp
Normal file
13
data/hooks/backup/27-data_xmpp
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Exit hook on subcommand error or unset variable
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
# Source YNH helpers
|
||||||
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
# Backup destination
|
||||||
|
backup_dir="${1}/data/xmpp"
|
||||||
|
|
||||||
|
ynh_backup /var/lib/metronome "${backup_dir}/var_lib_metronome"
|
||||||
|
ynh_backup /var/xmpp-upload/ "${backup_dir}/var_xmpp-upload"
|
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Exit hook on subcommand error or unset variable
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
# Source YNH helpers
|
|
||||||
source /usr/share/yunohost/helpers
|
|
||||||
|
|
||||||
# Backup destination
|
|
||||||
backup_dir="${1}/conf/nginx"
|
|
||||||
|
|
||||||
# Backup the configuration
|
|
||||||
ynh_backup "/etc/nginx/conf.d" "$backup_dir"
|
|
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Exit hook on subcommand error or unset variable
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
# Source YNH helpers
|
|
||||||
source /usr/share/yunohost/helpers
|
|
||||||
|
|
||||||
# Backup destination
|
|
||||||
backup_dir="${1}/conf/ynh"
|
|
||||||
|
|
||||||
# Backup the configuration
|
|
||||||
ynh_backup "/etc/yunohost/current_host" "${backup_dir}/current_host"
|
|
17
data/hooks/backup/40-conf_ynh_settings
Normal file
17
data/hooks/backup/40-conf_ynh_settings
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Exit hook on subcommand error or unset variable
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
# Source YNH helpers
|
||||||
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
# Backup destination
|
||||||
|
backup_dir="${1}/conf/ynh"
|
||||||
|
|
||||||
|
# Backup the configuration
|
||||||
|
ynh_backup "/etc/yunohost/firewall.yml" "${backup_dir}/firewall.yml"
|
||||||
|
ynh_backup "/etc/yunohost/current_host" "${backup_dir}/current_host"
|
||||||
|
[ ! -e "/etc/yunohost/settings.json" ] || ynh_backup "/etc/yunohost/settings.json" "${backup_dir}/settings.json"
|
||||||
|
[ ! -d "/etc/yunohost/dyndns" ] || ynh_backup "/etc/yunohost/dyndns" "${backup_dir}/dyndns"
|
||||||
|
[ ! -d "/etc/dkim" ] || ynh_backup "/etc/dkim" "${backup_dir}/dkim"
|
|
@ -1,10 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
source /usr/share/yunohost/helpers
|
|
||||||
ynh_abort_if_errors
|
|
||||||
YNH_CWD="${YNH_BACKUP_DIR%/}/conf/ynh/dyndns"
|
|
||||||
mkdir -p $YNH_CWD
|
|
||||||
cd "$YNH_CWD"
|
|
||||||
|
|
||||||
# Backup the configuration
|
|
||||||
ynh_exec_warn_less ynh_backup --src_path="/etc/yunohost/dyndns" --not_mandatory
|
|
18
data/hooks/backup/50-conf_manually_modified_files
Normal file
18
data/hooks/backup/50-conf_manually_modified_files
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source /usr/share/yunohost/helpers
|
||||||
|
ynh_abort_if_errors
|
||||||
|
YNH_CWD="${YNH_BACKUP_DIR%/}/conf/manually_modified_files"
|
||||||
|
mkdir -p "$YNH_CWD"
|
||||||
|
cd "$YNH_CWD"
|
||||||
|
|
||||||
|
yunohost tools shell -c "from yunohost.regenconf import manually_modified_files; print('\n'.join(manually_modified_files()))" > ./manually_modified_files_list
|
||||||
|
|
||||||
|
ynh_backup --src_path="./manually_modified_files_list"
|
||||||
|
|
||||||
|
for file in $(cat ./manually_modified_files_list)
|
||||||
|
do
|
||||||
|
ynh_backup --src_path="$file"
|
||||||
|
done
|
||||||
|
|
||||||
|
ynh_backup --src_path="/etc/ssowat/conf.json.persistent"
|
|
@ -1,21 +1,14 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
backup_dir="${1}/conf/ldap"
|
backup_dir="${1}/conf/ldap"
|
||||||
|
|
||||||
if [[ $EUID -ne 0 ]]; then
|
systemctl stop slapd
|
||||||
|
|
||||||
# We need to execute this script as root, since the ldap
|
# Create a directory for backup
|
||||||
# service will be shut down during the operation (and sudo
|
TMPDIR="/tmp/$(date +%s)"
|
||||||
# won't be available)
|
mkdir -p "$TMPDIR"
|
||||||
/bin/bash $(readlink -f $0) $1
|
|
||||||
|
|
||||||
else
|
die() {
|
||||||
|
|
||||||
service slapd stop || true
|
|
||||||
|
|
||||||
# Create a directory for backup
|
|
||||||
TMPDIR="/tmp/$(date +%s)"
|
|
||||||
mkdir -p "$TMPDIR"
|
|
||||||
|
|
||||||
die() {
|
|
||||||
state=$1
|
state=$1
|
||||||
error=$2
|
error=$2
|
||||||
|
|
||||||
|
@ -28,34 +21,34 @@ else
|
||||||
mv "${TMPDIR}/ldap" /var/lib/ldap)
|
mv "${TMPDIR}/ldap" /var/lib/ldap)
|
||||||
chown -R openldap: /etc/ldap/slapd.d /var/lib/ldap
|
chown -R openldap: /etc/ldap/slapd.d /var/lib/ldap
|
||||||
|
|
||||||
service slapd start
|
systemctl start slapd
|
||||||
rm -rf "$TMPDIR"
|
rm -rf "$TMPDIR"
|
||||||
|
|
||||||
# Print an error message and exit
|
# Print an error message and exit
|
||||||
printf "%s" "$error" 1>&2
|
printf "%s" "$error" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Restore the configuration
|
# Restore the configuration
|
||||||
mv /etc/ldap/slapd.d "$TMPDIR"
|
mv /etc/ldap/slapd.d "$TMPDIR"
|
||||||
mkdir -p /etc/ldap/slapd.d
|
mkdir -p /etc/ldap/slapd.d
|
||||||
cp -a "${backup_dir}/ldap.conf" /etc/ldap/ldap.conf
|
cp -a "${backup_dir}/ldap.conf" /etc/ldap/ldap.conf
|
||||||
cp -a "${backup_dir}/slapd.ldif" /etc/ldap/slapd.ldif
|
cp -a "${backup_dir}/slapd.ldif" /etc/ldap/slapd.ldif
|
||||||
# Legacy thing but we need it to force the regen-conf in case of it exist
|
# Legacy thing but we need it to force the regen-conf in case of it exist
|
||||||
cp -a "${backup_dir}/slapd.conf" /etc/ldap/slapd.conf
|
[ ! -e "${backup_dir}/slapd.conf" ] \
|
||||||
slapadd -F /etc/ldap/slapd.d -b cn=config \
|
|| cp -a "${backup_dir}/slapd.conf" /etc/ldap/slapd.conf
|
||||||
|
slapadd -F /etc/ldap/slapd.d -b cn=config \
|
||||||
-l "${backup_dir}/cn=config.master.ldif" \
|
-l "${backup_dir}/cn=config.master.ldif" \
|
||||||
|| die 1 "Unable to restore LDAP configuration"
|
|| die 1 "Unable to restore LDAP configuration"
|
||||||
chown -R openldap: /etc/ldap/slapd.d
|
chown -R openldap: /etc/ldap/slapd.d
|
||||||
|
|
||||||
# Restore the database
|
# Restore the database
|
||||||
mv /var/lib/ldap "$TMPDIR"
|
mv /var/lib/ldap "$TMPDIR"
|
||||||
mkdir -p /var/lib/ldap
|
mkdir -p /var/lib/ldap
|
||||||
slapadd -F /etc/ldap/slapd.d -b dc=yunohost,dc=org \
|
slapadd -F /etc/ldap/slapd.d -b dc=yunohost,dc=org \
|
||||||
-l "${backup_dir}/dc=yunohost-dc=org.ldif" \
|
-l "${backup_dir}/dc=yunohost-dc=org.ldif" \
|
||||||
|| die 2 "Unable to restore LDAP database"
|
|| die 2 "Unable to restore LDAP database"
|
||||||
chown -R openldap: /var/lib/ldap
|
chown -R openldap: /var/lib/ldap
|
||||||
|
|
||||||
service slapd start
|
systemctl start slapd
|
||||||
rm -rf "$TMPDIR"
|
rm -rf "$TMPDIR"
|
||||||
fi
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
backup_dir="$1/conf/ssh"
|
|
||||||
|
|
||||||
if [ -d /etc/ssh/ ]; then
|
|
||||||
cp -a $backup_dir/. /etc/ssh
|
|
||||||
service ssh restart
|
|
||||||
else
|
|
||||||
echo "SSH is not installed"
|
|
||||||
fi
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
backup_dir="$1/conf/ssowat"
|
|
||||||
|
|
||||||
cp -a $backup_dir/. /etc/ssowat
|
|
|
@ -1,4 +0,0 @@
|
||||||
backup_dir="$1/conf/ynh/firewall"
|
|
||||||
|
|
||||||
cp -a $backup_dir/. /etc/yunohost
|
|
||||||
yunohost firewall reload
|
|
|
@ -3,5 +3,3 @@ backup_dir="$1/conf/ynh/certs"
|
||||||
mkdir -p /etc/yunohost/certs/
|
mkdir -p /etc/yunohost/certs/
|
||||||
|
|
||||||
cp -a $backup_dir/. /etc/yunohost/certs/
|
cp -a $backup_dir/. /etc/yunohost/certs/
|
||||||
service nginx reload
|
|
||||||
service metronome reload
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
backup_dir="$1/conf/dkim"
|
|
||||||
|
|
||||||
cp -a $backup_dir/etc/dkim/. /etc/dkim
|
|
||||||
|
|
||||||
chown -R root:root /etc/dkim
|
|
||||||
chown _rspamd:root /etc/dkim
|
|
||||||
chown _rspamd:root /etc/dkim/*.mail.key
|
|
|
@ -2,7 +2,3 @@ backup_dir="$1/data/mail"
|
||||||
|
|
||||||
cp -a $backup_dir/. /var/mail/ || echo 'No mail found'
|
cp -a $backup_dir/. /var/mail/ || echo 'No mail found'
|
||||||
chown -R vmail:mail /var/mail/
|
chown -R vmail:mail /var/mail/
|
||||||
|
|
||||||
# Restart services to use migrated certs
|
|
||||||
service postfix restart
|
|
||||||
service dovecot restart
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
backup_dir="$1/conf/xmpp"
|
|
||||||
|
|
||||||
cp -a $backup_dir/etc/. /etc/metronome
|
|
||||||
cp -a $backup_dir/var/. /var/lib/metronome
|
|
||||||
|
|
||||||
# Restart to apply new conf and certs
|
|
||||||
service metronome restart
|
|
4
data/hooks/restore/27-data_xmpp
Normal file
4
data/hooks/restore/27-data_xmpp
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
backup_dir="$1/data/xmpp"
|
||||||
|
|
||||||
|
cp -a $backup_dir/var_lib_metronome/. /var/lib/metronome
|
||||||
|
cp -a $backup_dir/var_xmpp-upload/. /var/xmpp-upload
|
|
@ -1,7 +0,0 @@
|
||||||
backup_dir="$1/conf/nginx"
|
|
||||||
|
|
||||||
# Copy all conf except apps specific conf located in DOMAIN.d
|
|
||||||
find $backup_dir/ -mindepth 1 -maxdepth 1 -name '*.d' -or -exec cp -a {} /etc/nginx/conf.d/ \;
|
|
||||||
|
|
||||||
# Restart to use new conf and certs
|
|
||||||
service nginx restart
|
|
|
@ -1,3 +0,0 @@
|
||||||
backup_dir="$1/conf/ynh"
|
|
||||||
|
|
||||||
cp -a "${backup_dir}/current_host" /etc/yunohost/current_host
|
|
7
data/hooks/restore/40-conf_ynh_settings
Normal file
7
data/hooks/restore/40-conf_ynh_settings
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
backup_dir="$1/conf/ynh"
|
||||||
|
|
||||||
|
cp -a "${backup_dir}/current_host" /etc/yunohost/current_host
|
||||||
|
cp -a "${backup_dir}/firewall.yml" /etc/yunohost/firewall.yml
|
||||||
|
[ ! -e "${backup_dir}/settings.json" ] || cp -a "${backup_dir}/settings.json" "/etc/yunohost/settings.json"
|
||||||
|
[ ! -d "${backup_dir}/dyndns" ] || cp -raT "${backup_dir}/dyndns" "/etc/yunohost/dyndns"
|
||||||
|
[ ! -d "${backup_dir}/dkim" ] || cp -raT "${backup_dir}/dkim" "/etc/dkim"
|
|
@ -1,9 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
source /usr/share/yunohost/helpers
|
|
||||||
ynh_abort_if_errors
|
|
||||||
YNH_CWD="${YNH_BACKUP_DIR%/}/conf/ynh/dyndns"
|
|
||||||
cd "$YNH_CWD"
|
|
||||||
|
|
||||||
# Restore file if exists
|
|
||||||
ynh_restore_file --origin_path="/etc/yunohost/dyndns" --not_mandatory
|
|
13
data/hooks/restore/50-conf_manually_modified_files
Normal file
13
data/hooks/restore/50-conf_manually_modified_files
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source /usr/share/yunohost/helpers
|
||||||
|
ynh_abort_if_errors
|
||||||
|
YNH_CWD="${YNH_BACKUP_DIR%/}/conf/manually_modified_files"
|
||||||
|
cd "$YNH_CWD"
|
||||||
|
|
||||||
|
for file in $(cat ./manually_modified_files_list)
|
||||||
|
do
|
||||||
|
ynh_restore_file --origin_path="$file" --not_mandatory
|
||||||
|
done
|
||||||
|
|
||||||
|
ynh_restore_file --origin_path="/etc/ssowat/conf.json.persistent" --not_mandatory
|
|
@ -413,7 +413,7 @@ def test_backup_with_different_output_directory(mocker):
|
||||||
# Create the backup
|
# Create the backup
|
||||||
with message(mocker, "backup_created"):
|
with message(mocker, "backup_created"):
|
||||||
backup_create(
|
backup_create(
|
||||||
system=["conf_ssh"],
|
system=["conf_ynh_settings"],
|
||||||
apps=None,
|
apps=None,
|
||||||
output_directory="/opt/test_backup_output_directory",
|
output_directory="/opt/test_backup_output_directory",
|
||||||
name="backup",
|
name="backup",
|
||||||
|
@ -427,7 +427,7 @@ def test_backup_with_different_output_directory(mocker):
|
||||||
archives_info = backup_info(archives[0], with_details=True)
|
archives_info = backup_info(archives[0], with_details=True)
|
||||||
assert archives_info["apps"] == {}
|
assert archives_info["apps"] == {}
|
||||||
assert len(archives_info["system"].keys()) == 1
|
assert len(archives_info["system"].keys()) == 1
|
||||||
assert "conf_ssh" in archives_info["system"].keys()
|
assert "conf_ynh_settings" in archives_info["system"].keys()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.clean_opt_dir
|
@pytest.mark.clean_opt_dir
|
||||||
|
@ -436,7 +436,7 @@ def test_backup_using_copy_method(mocker):
|
||||||
# Create the backup
|
# Create the backup
|
||||||
with message(mocker, "backup_created"):
|
with message(mocker, "backup_created"):
|
||||||
backup_create(
|
backup_create(
|
||||||
system=["conf_nginx"],
|
system=["conf_ynh_settings"],
|
||||||
apps=None,
|
apps=None,
|
||||||
output_directory="/opt/test_backup_output_directory",
|
output_directory="/opt/test_backup_output_directory",
|
||||||
methods=["copy"],
|
methods=["copy"],
|
||||||
|
@ -675,9 +675,9 @@ def test_backup_binds_are_readonly(mocker, monkeypatch):
|
||||||
def custom_mount_and_backup(self):
|
def custom_mount_and_backup(self):
|
||||||
self._organize_files()
|
self._organize_files()
|
||||||
|
|
||||||
confssh = os.path.join(self.work_dir, "conf/ssh")
|
conf = os.path.join(self.work_dir, "conf/ynh/dkim")
|
||||||
output = subprocess.check_output(
|
output = subprocess.check_output(
|
||||||
"touch %s/test 2>&1 || true" % confssh,
|
"touch %s/test 2>&1 || true" % conf,
|
||||||
shell=True,
|
shell=True,
|
||||||
env={"LANG": "en_US.UTF-8"},
|
env={"LANG": "en_US.UTF-8"},
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue