summaryrefslogtreecommitdiff
path: root/sysutils/zetaback/files/opt-compression.in
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/zetaback/files/opt-compression.in')
-rw-r--r--sysutils/zetaback/files/opt-compression.in66
1 files changed, 66 insertions, 0 deletions
diff --git a/sysutils/zetaback/files/opt-compression.in b/sysutils/zetaback/files/opt-compression.in
new file mode 100644
index 000000000000..987040fbba84
--- /dev/null
+++ b/sysutils/zetaback/files/opt-compression.in
@@ -0,0 +1,66 @@
+--- zetaback.in.orig 2019-01-31 14:04:38.000000000 -0800
++++ zetaback.in 2020-05-02 16:38:22.402137000 -0700
+@@ -434,11 +434,15 @@
+
+ This value defaults to (14 * 86400), or two weeks.
+
++=item compressionprogram
++
++Compress files using gzip, bzip2, or xz. Defaults to gzip.
++
+ =item compressionlevel
+
+-Compress files using gzip at the specified compression level. 0 means no
+-compression. Accepted values are 1-9. Defaults to 1 (fastest/minimal
+-compression.)
++Compress files using gzip, bzip2, or xz at the specified compression level.
++0 means no compression. Accepted values are 1-9. Defaults to 1
++(fastest/minimal compression.)
+
+ =item ssh_config
+
+@@ -781,9 +785,18 @@
+
+ # compression is meaningless for dataset backups
+ if ($type ne "s") {
++ my $cp = config_get($host, 'compressionprogram');
++ if ($cp ne "xz" && $cp ne "bzip2" && $cp ne "gzip" && $cp ne "") {
++ die "zfs_full_backup: unsupported compression program specified\n";
++ } else ($cp eq "") {
++ $cp = "gzip";
++ my $cl = 1;
++ } else {
++ my $cl = 1;
++ }
+ my $cl = config_get($host, 'compressionlevel');
+ if ($cl >= 1 && $cl <= 9) {
+- open(LBACKUP, "|gzip -$cl >$store/.$dumpname") ||
++ open(LBACKUP, "|$cp -$cl >$store/.$dumpname") ||
+ die "zfs_do_backup $host:$fs $type: cannot create dump\n";
+ } else {
+ open(LBACKUP, ">$store/.$dumpname") ||
+@@ -1319,16 +1332,22 @@
+ else {
+ $command = "__ZFS__ recv $fs";
+ }
++ my $cp = config_get($host, 'compressionprogram');
++ if ($cp ne "xz" && $cp ne "bzip2" && $cp ne "gzip" && $cp ne "") {
++ die "zfs_full_backup: unsupported compression program specified\n";
++ } elsif ($cp eq "") {
++ $cp = "gzip";
++ }
+ if ($file) {
+ print " => piping $file to $command\n" if($DEBUG);
+- print "gzip -dfc $file | ssh $ssh_config $host $command\n" if ($DEBUG && $NEUTERED);
++ print "$cp -dfc $file | ssh $ssh_config $host $command\n" if ($DEBUG);
+ } elsif ($dataset) {
+ print " => piping $dataset to $command using zfs send\n" if ($DEBUG);
+ print "zfs send $dataset | ssh $ssh_config $host $command\n" if ($DEBUG && $NEUTERED);
+ }
+ unless($NEUTERED) {
+ if ($file) {
+- open(DUMP, "gzip -dfc $file |");
++ open(DUMP, "$cp -dfc $file |");
+ } elsif ($dataset) {
+ open(DUMP, "__ZFS__ send $dataset |");
+ }