]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
backup.pl: Fix #12626 backup/include.user entries will not override backup/exclude
authorAdolf Belka <adolf.belka@ipfire.org>
Fri, 21 May 2021 12:22:50 +0000 (14:22 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 25 May 2021 09:43:57 +0000 (09:43 +0000)
- Current situation is that any restrictions in the exclude file will not
   be overwritten by the include.user file
- For example the global exclude file has *.tmp preventing any tmp files
   being backed up from the globally included IPFire files
   If a user has some specific tmp files they want to backup and include
   them in the include.user file they will not override the global
   exclude file.
- This fix does the backup of the global and user backups as two separate
   events and then appends them. This means that any tmp files in the
   include.user file will be backed up.
- The backups are created as a global tar file and then have the user
   tar file appended and then the combined file gzipped and given the .ipf
   suffix. This has to be done this was as gzipped files can not be
   appended to each other whereas tar files can.

Fixes: 12626
Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
config/backup/backup.pl

index d2e5312526bfa8f9a18523573b80dc20e9da4e3a..8dffbf2e13ebe2a347c567058353a5f1ada64dbd 100644 (file)
@@ -57,12 +57,21 @@ make_backup() {
                make_addon_backup "${addon}"
        done
 
                make_addon_backup "${addon}"
        done
 
-       tar cvzf "${filename}" \
+       # Backup using global exclude/include definitions
+       tar cvf "${filename}" \
                --exclude-from="/var/ipfire/backup/exclude" \
                --exclude-from="/var/ipfire/backup/exclude" \
+               $(process_includes "/var/ipfire/backup/include") \
+               "$@"
+
+       # Backup using user exclude/include definitions and append to global backup
+       tar rvf "${filename}" \
                --exclude-from="/var/ipfire/backup/exclude.user" \
                --exclude-from="/var/ipfire/backup/exclude.user" \
-               $(process_includes "/var/ipfire/backup/include" "/var/ipfire/backup/include.user") \
+               $(process_includes "/var/ipfire/backup/include.user") \
                "$@"
 
                "$@"
 
+       # gzip the combined global/user backup and use .ipf suffix
+       gzip --suffix .ipf "${filename}"
+
        return 0
 }
 
        return 0
 }
 
@@ -206,7 +215,7 @@ main() {
                        local filename="${1}"
 
                        if [ -z "${filename}" ]; then
                        local filename="${1}"
 
                        if [ -z "${filename}" ]; then
-                               filename="/var/ipfire/backup/${NOW}.ipf"
+                               filename="/var/ipfire/backup/${NOW}"
                        fi
 
                        make_backup "${filename}" $(find_logfiles)
                        fi
 
                        make_backup "${filename}" $(find_logfiles)
@@ -216,7 +225,7 @@ main() {
                        local filename="${1}"
 
                        if [ -z "${filename}" ]; then
                        local filename="${1}"
 
                        if [ -z "${filename}" ]; then
-                               filename="/var/ipfire/backup/${NOW}.ipf"
+                               filename="/var/ipfire/backup/${NOW}"
                        fi
 
                        make_backup "${filename}"
                        fi
 
                        make_backup "${filename}"