diff --git a/bucket_copy.sh b/bucket_copy.sh new file mode 100644 index 0000000000000000000000000000000000000000..be800a6960c6a343efe3ff4e28b8ca874f01520a --- /dev/null +++ b/bucket_copy.sh @@ -0,0 +1,30 @@ +#!/bin/bash +: ${PROFILE:="cesnet_listvm_backup"} +: ${SRC_BUCKET:="resticlock"} +: ${DST_BUCKET:="restictmp"} +: ${DATE_THRESHOLD:="2024-02-26T10:20:30"} +AWS_OPTS="--endpoint-url https://s3.cl4.du.cesnet.cz --profile ${PROFILE}" + + +# Vytvoření destination bucketu, pokud neexistuje +if aws $AWS_OPTS s3 ls "s3://${DST_BUCKET}" 2>&1 | grep -q 'NoSuchBucket' +then + aws $AWS_OPTS s3 mb s3://${DST_BUCKET} + #aws $AWS_OPTS s3api put-bucket-versioning --bucket ${DST_BUCKET} --versioning-configuration Status=Enabled +fi + +# Kopírování souborů včetně verzí +aws $AWS_OPTS s3api list-objects-v2 --bucket $SRC_BUCKET --query 'Contents[].Key' --output json | jq -r '.[]' | while read key +do + # Získej všechny verze tohoto objektu + versions=$(aws $AWS_OPTS s3api list-object-versions --bucket $SRC_BUCKET --prefix "$key" --output json) + + # Filtruj verze podle data a vyber jen ty, které jsou mladší než datumový práh + version_id=$(echo "$versions" | jq -r --arg threshold "$DATE_THRESHOLD" '.Versions[] | select(.LastModified < $threshold) | .VersionId' | tail -1) + + # Kopíruj vybranou verzi do cílového bucketu + if [ -n "$version_id" ]; then + aws $AWS_OPTS s3api copy-object --bucket $DST_BUCKET --key "$key" --copy-source "$SRC_BUCKET/$key?versionId=$version_id" + fi +done + diff --git a/delete_all.sh b/delete_all.sh new file mode 100755 index 0000000000000000000000000000000000000000..d6b45532a9ca1d4296592342190ef96a262919aa --- /dev/null +++ b/delete_all.sh @@ -0,0 +1,28 @@ +#!/bin/bash +: ${BUCKET_NAME:=restictmp} +: ${PROFILE:="cesnet_listvm_backup"} +CESNET="--endpoint-url https://s3.cl4.du.cesnet.cz --profile ${PROFILE}" + +# Get list of all object versions +aws ${CESNET} s3api list-object-versions --bucket "${BUCKET_NAME}" --output json | jq -r '.Versions[] | .Key + " " + .VersionId ' > /tmp/versions.txt + +# Delete all object versions +while read -r LINE; do + KEY=$(awk '{print $1}' <<< "$LINE") + VERSION_ID=$(awk '{print $2}' <<< "$LINE") + aws ${CESNET} s3api delete-object --bucket "$BUCKET_NAME" --key "$KEY" --version-id="$VERSION_ID" +done < /tmp/versions.txt + +# Get list of all delete markers +aws ${CESNET} s3api list-object-versions --bucket "$BUCKET_NAME" --output json | jq -r '.DeleteMarkers[] | .Key + " " + .VersionId ' > /tmp/delete_markers.txt + +# Delete all delete markers +while read -r LINE; do + KEY=$(awk '{print $1}' <<< "$LINE") + VERSION_ID=$(awk '{print $2}' <<< "$LINE") + aws ${CESNET} s3api delete-object --bucket "$BUCKET_NAME" --key "$KEY" --version-id="$VERSION_ID" +done < /tmp/delete_markers.txt + +rm /tmp/versions.txt +rm /tmp/delete_markers.txt +