#!/bin/bash # Backup primary bucket or all buckets in a single project proj=${1} primary_only=${2} if [[ -z ${proj} ]]; then echo "Usage: ${0} [primary only]" echo "Example: ${0} 34 yes" exit 1 fi function do_backup { local project="${1}" local mirror="${2}" local bucket="${3}" local mirrorbucket="${bucket}-mirror" local mountpoint="/opt/backupmounts/${bucket}" mkdir -p "${mountpoint}" rclone mount "${project}:${bucket}" "${mountpoint}/" --daemon --allow-other --dir-cache-time 24h --timeout 0 rclone mkdir "${mirror}:${mirrorbucket}" duplicity full --asynchronous-upload --tempdir /mnt --archive-dir /mnt --timeout 3600 \ --verbosity debug --no-encryption "${mountpoint}" "rclone://${mirror}:/${mirrorbucket}" umount "${mountpoint}" rmdir "${mountpoint}" } project="sto4-${proj}" mirror="sto3-${proj}" for bucket in $(rclone lsd "${project}:/" | awk '{print $5}'); do if [[ -n ${primary_only} ]] && ! [[ $bucket =~ 'primary-' ]]; then continue else do_backup "${project}" "${mirror}" "${bucket}" fi done