|
1 | 1 | #!/bin/bash |
2 | | -# info: Dumps database contents in STDIN / file |
3 | | -# options: USER DATABASE [FILE] |
| 2 | +# info: Dumps database contents in STDIN or file optional file can be compressed |
| 3 | +# options: USER DATABASE [FILE] [COMPRESSION] |
4 | 4 | # |
5 | 5 | # example: v-dump-database user user_databse > test.sql |
6 | | -# example: v-dump-database user user_databse file |
| 6 | +# example: v-dump-database user user_databse file gzip |
| 7 | +# example: v-dump-database user user_databse file zstd |
7 | 8 | # |
8 | | -# Dumps database in STDIN or /backup/user.database.type.sql |
| 9 | +# Dumps database in STDIN or file (/backup/user.database.type.sql) |
| 10 | +# For compression gzip or zstd is supported by default plain sql is used |
9 | 11 |
|
10 | 12 | #----------------------------------------------------------# |
11 | 13 | # Variables & Functions # |
|
15 | 17 | user=$1 |
16 | 18 | database=$2 |
17 | 19 | output=$3 |
| 20 | +compression=${4-none} |
18 | 21 |
|
19 | 22 | # Includes |
20 | 23 | # shellcheck source=/etc/hestiacp/hestia.conf |
@@ -63,17 +66,30 @@ case $TYPE in |
63 | 66 | pgsql) dump_pgsql_database ;; |
64 | 67 | esac |
65 | 68 |
|
| 69 | +if [ "$compression" = 'zstd' ]; then |
| 70 | + extension="sql.zst" |
| 71 | + pzstd $dump |
| 72 | + rm $dump |
| 73 | + dump="$tmpdir/$database.$TYPE.sql.zst" |
| 74 | +elif [ "$compression" = 'gzip' ]; then |
| 75 | + extension="sql.gz" |
| 76 | + gzip $dump |
| 77 | + dump="$tmpdir/$database.$TYPE.sql.gz" |
| 78 | +else |
| 79 | + extension="sql" |
| 80 | +fi |
| 81 | + |
66 | 82 | if [ "$output" = "file" ]; then |
67 | 83 | # echo filename for use in the php |
68 | | - echo "${user}_${database}_${TYPE}_${timestamp}.sql" |
| 84 | + echo "${user}_${database}_${TYPE}_${timestamp}.${extension}" |
69 | 85 |
|
70 | | - cp $dump $BACKUP/${user}_${database}_${TYPE}_${timestamp}.sql |
| 86 | + cp $dump $BACKUP/${user}_${database}_${TYPE}_${timestamp}.${extension} |
71 | 87 |
|
72 | 88 | # echo file location for use in the php |
73 | | - echo "$BACKUP/${user}_${database}_${TYPE}_${timestamp}.sql" |
| 89 | + echo "$BACKUP/${user}_${database}_${TYPE}_${timestamp}.${extension}" |
74 | 90 |
|
75 | 91 | # cleanup |
76 | | - echo "rm $BACKUP/${user}_${database}_${TYPE}_${timestamp}.sql" | at now + 1 hour |
| 92 | + echo "rm $BACKUP/${user}_${database}_${TYPE}_${timestamp}.${extension}" | at now + 1 hour |
77 | 93 | else |
78 | 94 | cat $dump |
79 | 95 | fi |
|
0 commit comments