From 601485558a702baddb85eff1d1522eb3e4617e5c Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Fri, 9 Dec 2016 10:04:12 -0500 Subject: [PATCH] Added gzip compression to snapshots (easy to extend to other compression methods, as well). Issue #1 --- basiliskiivm | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/basiliskiivm b/basiliskiivm index 4835846..ab69663 100755 --- a/basiliskiivm +++ b/basiliskiivm @@ -23,6 +23,7 @@ copyright="Copyright (c) 2016 Morgan Aldridge" # global variables BASILISKII_BINARY="${BASILISKII_BINARY:=BasiliskII}" BASILISKII_VMS_PATH="${BASILISKII_VMS_PATH:="${HOME}/Documents/BasiliskII"}" +BASILISKII_SNAPSHOT_COMPRESSION="${BASILISKII_SNAPSHOT_COMPRESSION:=gzip}" basiliskii_prefs_file=".basilisk_ii_prefs" basiliskii_pid_file=".basiliskii.pid" @@ -354,14 +355,30 @@ function vm_pkg_create_snapshot() { if ! mkdir "$snapshot"; then echo "Error! Unable to create snapshot directory '${snapshot}'." else - local disk_copy_success=true + local disks_copy_success=true while IFS= read -r disk; do - if ! cp "${1}/${disk}" "${snapshot}/${disk}"; then - echo "Error! Unable to copy disk '${1}/${disk}' to '${snapshot}/${disk}'." - disk_copy_success=false + local src_disk="${1}/${disk}" + local dst_disk="${snapshot}/${disk}" + local copy_success=true + case "$BASILISKII_SNAPSHOT_COMPRESSION" in + "gzip") + dst_disk="${dst_disk}.gz" + if ! gzip -k -c "$src_disk" > "$dst_disk"; then + copy_success=false + fi + ;; + *) + if ! cp "$src_disk" "$dst_disk"; then + copy_success=false + fi + ;; + esac + if ! $copy_success; then + echo "Error! Unable to copy disk '${src_disk}' to '${dst_disk}'." + disks_copy_success=false fi done <<< "$(vm_pkg_disks "$1")" - if $disk_copy_success; then + if $disks_copy_success; then echo "Created '${timestamp}' snapshot of '${vm}' BasiliskII VM." success=true else