From 0565ad831a531dcb8bac87abe32f6f0e330fa8cc Mon Sep 17 00:00:00 2001 From: Ludovic Poujol Date: Tue, 17 Aug 2021 13:44:30 +0200 Subject: [PATCH 1/6] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'zzz=5Fevobacku?= =?UTF-8?q?p'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change order of sql dumps commands --- zzz_evobackup | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/zzz_evobackup b/zzz_evobackup index 92b5720..ee47aa6 100755 --- a/zzz_evobackup +++ b/zzz_evobackup @@ -162,12 +162,12 @@ if [ "${LOCAL_TASKS}" = "1" ]; then # mysqldump --defaults-extra-file=/etc/mysql/debian.cnf -P 3306 \ # --opt --all-databases --force --events --hex-blob | gzip --best > ${LOCAL_BACKUP_DIR}/mysql.bak.gz - ## example with two dumps for each table (.sql/.txt) for all databases - # for i in $(echo SHOW DATABASES | mysql --defaults-extra-file=/etc/mysql/debian.cnf -P 3306 \ - # | egrep -v "^(Database|information_schema|performance_schema|sys)" ); \ - # do mkdir -p -m 700 /home/mysqldump/$i ; chown -RL mysql /home/mysqldump ; \ - # mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force -P 3306 -Q --opt --events --hex-blob --skip-comments \ - # --fields-enclosed-by='\"' --fields-terminated-by=',' -T /home/mysqldump/$i $i; done + ## example with compressed SQL dump (with data) for each databases + # mkdir -p -m 700 ${LOCAL_BACKUP_DIR}/mysql/ + # for i in $(mysql --defaults-extra-file=/etc/mysql/debian.cnf -P 3306 -e 'show databases' -s --skip-column-names \ + # | egrep -v "^(Database|information_schema|performance_schema|sys)"); do + # mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force -P 3306 --events --hex-blob $i | gzip --best > ${LOCAL_BACKUP_DIR}/mysql/${i}.sql.gz + # done ## Dump all grants (requires 'percona-toolkit' package) # mkdir -p -m 700 ${LOCAL_BACKUP_DIR}/mysql/ @@ -180,19 +180,19 @@ if [ "${LOCAL_TASKS}" = "1" ]; then # mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force -P 3306 --no-data --databases $i > ${LOCAL_BACKUP_DIR}/mysql/${i}.schema.sql # done - ## example with compressed SQL dump (with data) for each databases - # mkdir -p -m 700 ${LOCAL_BACKUP_DIR}/mysql/ - # for i in $(mysql --defaults-extra-file=/etc/mysql/debian.cnf -P 3306 -e 'show databases' -s --skip-column-names \ - # | egrep -v "^(Database|information_schema|performance_schema|sys)"); do - # mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force -P 3306 --events --hex-blob $i | gzip --best > ${LOCAL_BACKUP_DIR}/mysql/${i}.sql.gz - # done - ## example with *one* uncompressed SQL dump for *one* database (MYBASE) # mkdir -p -m 700 ${LOCAL_BACKUP_DIR}/mysql/MYBASE # chown -RL mysql ${LOCAL_BACKUP_DIR}/mysql/ # mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force -Q \ # --opt --events --hex-blob --skip-comments -T ${LOCAL_BACKUP_DIR}/mysql/MYBASE MYBASE + ## example with two dumps for each table (.sql/.txt) for all databases + # for i in $(echo SHOW DATABASES | mysql --defaults-extra-file=/etc/mysql/debian.cnf -P 3306 \ + # | egrep -v "^(Database|information_schema|performance_schema|sys)" ); \ + # do mkdir -p -m 700 /home/mysqldump/$i ; chown -RL mysql /home/mysqldump ; \ + # mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force -P 3306 -Q --opt --events --hex-blob --skip-comments \ + # --fields-enclosed-by='\"' --fields-terminated-by=',' -T /home/mysqldump/$i $i; done + ## example with mysqlhotcopy # mkdir -p -m 700 ${LOCAL_BACKUP_DIR}/mysqlhotcopy/ # mysqlhotcopy MYBASE ${LOCAL_BACKUP_DIR}/mysqlhotcopy/ From da6e59a37b154374a3588f292ee906903a2f3e8f Mon Sep 17 00:00:00 2001 From: Jeremy Lecour Date: Tue, 2 Nov 2021 15:22:08 +0100 Subject: [PATCH 2/6] Add bullseye to test suite --- Vagrantfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Vagrantfile b/Vagrantfile index e7764fe..aadecbc 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -47,7 +47,9 @@ SCRIPT { :version => "stretch", :fs => "btrfs" }, { :version => "stretch", :fs => "ext4" }, { :version => "buster", :fs => "btrfs" }, - { :version => "buster", :fs => "ext4" } + { :version => "buster", :fs => "ext4" }, + { :version => "bullseye", :fs => "btrfs" }, + { :version => "bullseye", :fs => "ext4" } ] nodes.each do |i| From 3be8b638feef95b9e0a07cb691dd0692c1b84cb0 Mon Sep 17 00:00:00 2001 From: Jeremy Lecour Date: Tue, 2 Nov 2021 15:23:21 +0100 Subject: [PATCH 3/6] Pseudo-code for btrfs check --- lib/bkctld-inc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/bkctld-inc b/lib/bkctld-inc index d29c752..94ae9a2 100755 --- a/lib/bkctld-inc +++ b/lib/bkctld-inc @@ -14,12 +14,18 @@ create_inc_btrfs() { jail_path=$(jail_path "${jail_name}") inc_path=$(inc_path "${jail_name}" "${inc_name}") + btrfs_bin=$(command -v btrfs) + ### Pseudo-code + # if [ -z "${btrfs_bin}" ]; then + # error "Can't find btrfs" + # fi + if dry_run; then echo "[dry-run] btrfs subvolume snapshot of ${jail_path} to ${inc_path}" else mkdir --parents "$(dirname "${inc_path}")" # create a btrfs readonly snapshot from the jail - /bin/btrfs subvolume snapshot -r "${jail_path}" "${inc_path}" | debug + ${btrfs_bin} subvolume snapshot -r "${jail_path}" "${inc_path}" | debug fi } create_inc_ext4() { @@ -52,7 +58,7 @@ for jail_name in ${jails_list}; do # If no incs policy is found, we don't create incs if [ -n "${incs_policy_file}" ]; then - # If no incs directory is found, we don't create incs + # If inc directory is not present, we proceed with inc creation if [ ! -d "${inc_path}" ]; then info "Progress: jail ${jails_count} out of ${jails_total}" notice "Create inc \`${inc_name}' for jail \`${jail_name}' : start" From 4e7d5506de602f4ba55ce9b56f3a3703cf0c48a4 Mon Sep 17 00:00:00 2001 From: "William Hirigoyen (Evolix)" Date: Tue, 2 Nov 2021 16:38:58 +0100 Subject: [PATCH 4/6] Add btrfs command check (for future btrfs-progs switch from Depends to Recommends in .deb) --- lib/bkctld-inc | 7 +++---- lib/bkctld-inc-lock | 12 ++++++++++-- lib/bkctld-init | 6 +++++- lib/bkctld-remove | 12 ++++++++---- lib/bkctld-rm | 7 ++++++- 5 files changed, 32 insertions(+), 12 deletions(-) diff --git a/lib/bkctld-inc b/lib/bkctld-inc index 94ae9a2..049e5cf 100755 --- a/lib/bkctld-inc +++ b/lib/bkctld-inc @@ -15,10 +15,9 @@ create_inc_btrfs() { inc_path=$(inc_path "${jail_name}" "${inc_name}") btrfs_bin=$(command -v btrfs) - ### Pseudo-code - # if [ -z "${btrfs_bin}" ]; then - # error "Can't find btrfs" - # fi + if [ -z "${btrfs_bin}" ]; then + error "btrfs not found. Please install brtfs-progs." + fi if dry_run; then echo "[dry-run] btrfs subvolume snapshot of ${jail_path} to ${inc_path}" diff --git a/lib/bkctld-inc-lock b/lib/bkctld-inc-lock index 6e69196..a71edf0 100755 --- a/lib/bkctld-inc-lock +++ b/lib/bkctld-inc-lock @@ -12,8 +12,12 @@ target_path="${2:?}" lock_target() { target="${1:?}" + btrfs_bin=$(command -v btrfs) + if [ -z ${btrfs_bin} ]; then + error "btrfs not found. Please install brtfs-progs." + fi if is_btrfs "${target}"; then - btrfs property set -ts "${target}" ro true + ${btrfs_bin} property set -ts "${target}" ro true info "Lock ${target}: done". else info "Lock ${target}: not BTRFS, nothing done". @@ -21,8 +25,12 @@ lock_target() { } unlock_target() { target="${1:?}" + btrfs_bin=$(command -v btrfs) + if [ -z ${btrfs_bin} ]; then + error "btrfs not found. Please install brtfs-progs." + fi if is_btrfs "${target}"; then - btrfs property set -ts "${target}" ro false + ${btrfs_bin} property set -ts "${target}" ro false info "Unlock ${target}: done." else info "Unlock ${target}: not BTRFS, nothing done." diff --git a/lib/bkctld-init b/lib/bkctld-init index 6b52815..1e35f19 100755 --- a/lib/bkctld-init +++ b/lib/bkctld-init @@ -18,9 +18,13 @@ test -d "${jail_path}" && error "Skip jail \`${jail_name}' : it already exists" # Create config and jails directory mkdir --parents "${CONFDIR}" "${JAILDIR}" +btrfs_bin=$(command -v btrfs) +if [ -z ${btrfs_bin} ]; then + error "btrfs not found. Please install brtfs-progs." +fi if is_btrfs "$(dirname "${JAILDIR}")" || is_btrfs "${JAILDIR}"; then - /bin/btrfs subvolume create "${jail_path}" + ${btrfs_bin} subvolume create "${jail_path}" else mkdir --parents "${jail_path}" fi diff --git a/lib/bkctld-remove b/lib/bkctld-remove index dab3b6c..731d414 100755 --- a/lib/bkctld-remove +++ b/lib/bkctld-remove @@ -52,9 +52,13 @@ fi rm -f "${CONFDIR}/${jail_name}" rm -rf "$(jail_config_dir "${jail_name}")" -jail_inode=$(stat --format=%i "${jail_path}") -if [ "${jail_inode}" -eq 256 ]; then - /bin/btrfs subvolume delete "${jail_path}" | debug +btrfs_bin=$(command -v btrfs) +if [ -z ${btrfs_bin} ]; then + error "btrfs not found. Please install brtfs-progs." +fi + +if is_btrfs "${jail_path}"; then + ${btrfs_bin} subvolume delete "${jail_path}" | debug else rm -rf "${jail_path:?}" | debug fi @@ -65,7 +69,7 @@ if [ -d "${incs_path}" ]; then for inc in ${incs}; do inc_inode=$(stat --format=%i "${incs_path}/${inc}") if [ "${inc_inode}" -eq 256 ]; then - /bin/btrfs subvolume delete "${incs_path}/${inc}" | debug + ${btrfs_bin} subvolume delete "${incs_path}/${inc}" | debug else warning "You need to purge \`${incs_path}/${inc}' manually" fi diff --git a/lib/bkctld-rm b/lib/bkctld-rm index 7b1df54..926877e 100755 --- a/lib/bkctld-rm +++ b/lib/bkctld-rm @@ -61,11 +61,16 @@ delete_inc_btrfs() { inc_name=$2 inc_path=$(inc_path "${jail_name}" "${inc_name}") + btrfs_bin=$(command -v btrfs) + + if [ -z ${btrfs_bin} ]; then + error "btrfs not found. Please install brtfs-progs." + fi if dry_run; then echo "[dry-run] delete btrfs subvolume ${inc_path}" else - /bin/btrfs subvolume delete "${inc_path}" | debug + ${btrfs_bin} subvolume delete "${inc_path}" | debug fi } delete_inc_ext4() { From ed1d2bf6603d9d444f1c3d3397d1211d73600188 Mon Sep 17 00:00:00 2001 From: "William Hirigoyen (Evolix)" Date: Tue, 2 Nov 2021 17:24:50 +0100 Subject: [PATCH 5/6] Moving from package btrfs-tools (transitionnal) to btrfs-progs (retro-compatible) to allow Vagrant tests in Bullseye. --- Vagrantfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Vagrantfile b/Vagrantfile index aadecbc..9791669 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -24,7 +24,7 @@ mkdir -p /usr/lib/nagios/plugins/ SCRIPT $deps = <