Skip to content

Commit 055b4d7

Browse files
committed
feat(backup): add support for multiple compression methods in backup process
1 parent 04f1654 commit 055b4d7

File tree

1 file changed

+33
-8
lines changed

1 file changed

+33
-8
lines changed

lgsm/modules/command_backup.sh

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,23 +110,48 @@ fn_backup_create_lockfile() {
110110
trap fn_backup_trap INT
111111
}
112112

113+
fn_select_compression() {
114+
if command -v zstd > /dev/null 2>&1; then
115+
compress_prog="zstd"
116+
compress_ext="tar.zst"
117+
compress_flag="--zstd"
118+
elif command -v pigz > /dev/null 2>&1; then
119+
compress_prog="pigz"
120+
compress_ext="tar.gz"
121+
compress_flag="--use-compress-program=pigz"
122+
elif command -v gzip > /dev/null 2>&1; then
123+
compress_prog="gzip"
124+
compress_ext="tar.gz"
125+
compress_flag="--gzip"
126+
else
127+
compress_prog=""
128+
compress_ext="tar"
129+
compress_flag=""
130+
fi
131+
}
132+
113133
# Compressing files.
114134
fn_backup_compression() {
115-
# Tells how much will be compressed using rootdirduexbackup value from info_distro and prompt for continue.
135+
fn_select_compression
136+
116137
fn_print_info "A total of ${rootdirduexbackup} will be compressed."
117-
fn_script_log_info "A total of ${rootdirduexbackup} will be compressed: ${backupdir}/${backupname}.tar.gz"
118-
fn_print_dots "Backup (${rootdirduexbackup}) ${backupname}.tar.gz, in progress ..."
119-
fn_script_log_info "Backup ${rootdirduexbackup} ${backupname}.tar.gz, in progress"
138+
fn_script_log_info "A total of ${rootdirduexbackup} will be compressed: ${backupdir}/${backupname}.${compress_ext}"
139+
fn_print_dots "Backup (${rootdirduexbackup}) ${backupname}.${compress_ext}, in progress ..."
140+
fn_script_log_info "Backup ${rootdirduexbackup} ${backupname}.${compress_ext}, in progress"
120141
excludedir=$(fn_backup_relpath)
121142

122-
# Check that excludedir is a valid path.
123143
if [ ! -d "${excludedir}" ]; then
124144
fn_print_fail_nl "Problem identifying the previous backup directory for exclusion."
125145
fn_script_log_fail "Problem identifying the previous backup directory for exclusion"
126146
core_exit.sh
127147
fi
128148

129-
tar --use-compress-program=pigz -hcf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}" --exclude "${tmpdir}" ./.
149+
if [ -n "${compress_flag}" ]; then
150+
tar ${compress_flag} -hcf "${backupdir}/${backupname}.${compress_ext}" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}" --exclude "${tmpdir}" ./.
151+
else
152+
tar -hcf "${backupdir}/${backupname}.${compress_ext}" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}" --exclude "${tmpdir}" ./.
153+
fi
154+
130155
exitcode=$?
131156
if [ "${exitcode}" -ne 0 ]; then
132157
fn_print_fail_eol
@@ -136,8 +161,8 @@ fn_backup_compression() {
136161
fn_script_log_fail "Starting backup"
137162
else
138163
fn_print_ok_eol
139-
fn_print_ok_nl "Completed: ${italic}${backupname}.tar.gz${default}, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')"
140-
fn_script_log_pass "Backup created: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')"
164+
fn_print_ok_nl "Completed: ${italic}${backupname}.${compress_ext}${default}, total size $(du -sh "${backupdir}/${backupname}.${compress_ext}" | awk '{print $1}')"
165+
fn_script_log_pass "Backup created: ${backupname}.${compress_ext}, total size $(du -sh "${backupdir}/${backupname}.${compress_ext}" | awk '{print $1}')"
141166
alert="backup"
142167
alert.sh
143168
fi

0 commit comments

Comments
 (0)