diff --git a/debian/proxmox-file-restore.postinst b/debian/proxmox-file-restore.postinst new file mode 100755 index 00000000..bb039fae --- /dev/null +++ b/debian/proxmox-file-restore.postinst @@ -0,0 +1,63 @@ +#!/bin/sh + +set -e + +update_initramfs() { + # regenerate initramfs for single file restore VM + INST_PATH="/usr/lib/x86_64-linux-gnu/proxmox-backup/file-restore" + CACHE_PATH="/var/cache/proxmox-backup/file-restore-initramfs.img" + + # cleanup first, in case proxmox-file-restore was uninstalled since we do + # not want an unuseable image lying around + rm -f "$CACHE_PATH" + + [ -f "$INST_PATH/initramfs.img" ] || \ + echo "proxmox-backup-restore-image is not installed correctly" >2 || \ + exit 1 + + echo "Updating file-restore initramfs..." + + # avoid leftover temp file + cleanup() { + rm -f "$CACHE_PATH.tmp" + } + trap cleanup EXIT + + mkdir -p "/var/cache/proxmox-backup" + cp "$INST_PATH/initramfs.img" "$CACHE_PATH.tmp" + + # cpio uses passed in path as offset inside the archive as well, so we need + # to be in the same dir as the daemon binary to ensure it's placed in / + ( cd "$INST_PATH"; \ + printf "./proxmox-restore-daemon" \ + | cpio -o --format=newc -A -F "$CACHE_PATH.tmp" ) + mv -f "$CACHE_PATH.tmp" "$CACHE_PATH" + + trap - EXIT +} + +case "$1" in + configure) + # in case restore daemon was updated + update_initramfs + ;; + + triggered) + if [ "$2" = "proxmox-backup-restore-image-update" ]; then + # in case base-image was updated + update_initramfs + else + echo "postinst called with unknown trigger name: \`$2'" >&2 + fi + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/debian/proxmox-file-restore.triggers b/debian/proxmox-file-restore.triggers new file mode 100644 index 00000000..c316dc34 --- /dev/null +++ b/debian/proxmox-file-restore.triggers @@ -0,0 +1 @@ +interest-noawait proxmox-backup-restore-image-update