if the backup storage is local do not use webdav

This commit is contained in:
goldsquid
2026-06-06 11:36:58 +07:00
parent eccae5039f
commit 1aef140a9a
3 changed files with 56 additions and 11 deletions

View File

@@ -4,8 +4,14 @@ BASEPATH="$(dirname "$0")"
source "$BASEPATH/volume-utils.sh"
backup_dir="/backup"
if [[ -n $2 ]]; then
echo "upload backup via webdav to $2"
remote_target="$2"
if [[ -n "$remote_target" ]] && is_local_backup_url "$remote_target"; then
echo "Target URL points to this server, using local /backup instead of $remote_target"
remote_target=""
fi
if [[ -n "$remote_target" ]]; then
echo "upload backup via webdav to $remote_target"
else
if [ ! -d "$backup_dir" ]; then
echo "Error: /backup directory does not exist"
@@ -75,16 +81,16 @@ for key in $keys; do
#echo "$target_file"
if [[ -n $2 ]]; then
if [[ -n "$remote_target" ]]; then
# Upload volume archive
tar -cf - --dereference "$source_folder" | pv -pterb -s $(du -sb "$source_folder" | awk '{print $1}') | zstd | curl -X PUT --upload-file - "$2/null/uploading-$target_file"
curl -X MOVE -H "Destination: /null/$target_file" "$2/null/uploading-$target_file"
tar -cf - --dereference "$source_folder" | pv -pterb -s $(du -sb "$source_folder" | awk '{print $1}') | zstd | curl -X PUT --upload-file - "$remote_target/null/uploading-$target_file"
curl -X MOVE -H "Destination: /null/$target_file" "$remote_target/null/uploading-$target_file"
# Generate and upload metadata file
echo "Generating metadata for volume: rpc_$key"
temp_metadata="/tmp/$metadata_file_name"
generate_volume_metadata "$key" "$source_folder" "$temp_metadata"
curl -X PUT --upload-file "$temp_metadata" "$2/null/$metadata_file_name"
curl -X PUT --upload-file "$temp_metadata" "$remote_target/null/$metadata_file_name"
rm -f "$temp_metadata"
else
# Create volume archive