forked from Deuxfleurs/infrastructure
66 lines
1.2 KiB
Bash
66 lines
1.2 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
cd $(dirname $0)
|
||
|
|
||
|
if [ "$(hostname)" != "io" ]; then
|
||
|
echo "Please run this script on io"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [ ! -d "buckets" ]; then
|
||
|
btrfs subvolume create $(pwd)/buckets
|
||
|
fi
|
||
|
|
||
|
|
||
|
AK=$1
|
||
|
SK=$2
|
||
|
|
||
|
function gctl {
|
||
|
docker exec garage /garage $@
|
||
|
}
|
||
|
|
||
|
gctl status
|
||
|
BUCKETS=$(gctl bucket list | tail -n +2 | cut -d " " -f 3 | cut -d "," -f 1)
|
||
|
|
||
|
for BUCKET in $BUCKETS; do
|
||
|
case $BUCKET in
|
||
|
*backup*)
|
||
|
echo "Skipping $BUCKET (not doing backup of backup)"
|
||
|
;;
|
||
|
*cache*)
|
||
|
echo "Skipping $BUCKET (not doing backup of cache)"
|
||
|
;;
|
||
|
*)
|
||
|
echo "Backing up $BUCKET"
|
||
|
|
||
|
if [ ! -d $(pwd)/buckets/$BUCKET ]; then
|
||
|
mkdir $(pwd)/buckets/$BUCKET
|
||
|
fi
|
||
|
|
||
|
gctl bucket allow --key $AK --read $BUCKET
|
||
|
rclone sync --s3-endpoint http://localhost:3900 \
|
||
|
--s3-access-key-id $AK \
|
||
|
--s3-secret-access-key $SK \
|
||
|
--s3-region garage \
|
||
|
--s3-force-path-style \
|
||
|
--transfers 32 \
|
||
|
--fast-list \
|
||
|
--stats-one-line \
|
||
|
--stats 10s \
|
||
|
--stats-log-level NOTICE \
|
||
|
:s3:$BUCKET $(pwd)/buckets/$BUCKET
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
# Remove duplicates
|
||
|
#duperemove -dAr $(pwd)/buckets
|
||
|
|
||
|
if [ ! -d "$(pwd)/snapshots" ]; then
|
||
|
mkdir snapshots
|
||
|
fi
|
||
|
|
||
|
SNAPSHOT=$(pwd)/snapshots/buckets-$(date +%F)
|
||
|
echo "Making snapshot: $SNAPSHOT"
|
||
|
btrfs subvolume snapshot $(pwd)/buckets $SNAPSHOT
|