From 3768d0e77b6c8b2a9f3a130326acf6bd1349bb63 Mon Sep 17 00:00:00 2001 From: Raphael Dannecker Date: Sat, 7 Oct 2023 12:00:42 +0200 Subject: [PATCH] remove old qcows if filesize on server has changed --- roles/lmn_vm/files/sync-vm.sh | 17 +++++++++++++++++ roles/lmn_vm/files/upload-vm.sh | 5 +++++ 2 files changed, 22 insertions(+) diff --git a/roles/lmn_vm/files/sync-vm.sh b/roles/lmn_vm/files/sync-vm.sh index 136f34c..c5a219e 100755 --- a/roles/lmn_vm/files/sync-vm.sh +++ b/roles/lmn_vm/files/sync-vm.sh @@ -65,8 +65,25 @@ sync_all_images() { /lmn/vm/ } +delete_old_qcows() { + cd /lmn/vm + for qcow2 in *.qcow2; do + qcowsize=$(stat -c%s "${qcow2}") + if [[ -f "${qcow2}.size" ]] && [[ "${qcowsize}" != $(<"${qcow2}.size") ]]; then + torrent="${qcow2}.torrent" + session="${torrent//./_}" + if vmimage-torrent status | grep -qw ^"$session"; then + vmimage-torrent stop "${qcow2}" + fi + rm "${qcow2}" + fi + done +} + sync_all_torrents() { rsync -ai rsync://server:/vmimages-download/*.torrent /lmn/vm/ + rsync -ai rsync://server:/vmimages-download/*.size /lmn/vm/ + delete_old_qcows rsync -ai rsync://server:/vmimages-download/*.xml /lmn/vm/ RSYNC_COMMAND=$(rsync -ai --delete --exclude=mimeinfo.cache rsync://server:/vmimages-download/desktop/ /usr/local/share/applications/ | sed '/ \.\//d') if [[ $? -eq 0 ]] && [[ -n "${RSYNC_COMMAND}" ]]; then diff --git a/roles/lmn_vm/files/upload-vm.sh b/roles/lmn_vm/files/upload-vm.sh index 5b66b14..7a05074 100755 --- a/roles/lmn_vm/files/upload-vm.sh +++ b/roles/lmn_vm/files/upload-vm.sh @@ -42,9 +42,14 @@ upload_image() { cd /lmn/vm # (re-) create torrent file sudo -u lmnsynci /usr/local/bin/vmimage-torrent create "${VM_NAME}.qcow2" + # create size-information-file + stat -c%s "${VM_NAME}.qcow2" > "${VM_NAME}.qcow2.size" + chown lmnsynci:lmnsynci "${VM_NAME}.qcow2.size" # Upload Torrent, qcow2 and machine-definition-XML [[ -f "/lmn/vm/${VM_NAME}.qcow2.torrent" ]] && rsync -av --password-file=/etc/rsync.secret \ "/lmn/vm/${VM_NAME}.qcow2.torrent" rsync://vmuser@server:/vmimages-upload/ + rsync -av --password-file=/etc/rsync.secret "/lmn/vm/${VM_NAME}.qcow2.size" \ + rsync://vmuser@server:/vmimages-upload/ rsync -av --password-file=/etc/rsync.secret "/lmn/vm/${VM_NAME}.qcow2" \ rsync://vmuser@server:/vmimages-upload/ rsync -av --password-file=/etc/rsync.secret "/lmn/vm/${VM_NAME}.xml" \