Skip to content

Commit d2c2f89

Browse files
committed
pvbackup: Upgrade to rclone, adjust commands
1 parent ec8e5e1 commit d2c2f89

File tree

3 files changed

+23
-26
lines changed

3 files changed

+23
-26
lines changed

containers/tools/pvbackup/Dockerfile

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
1-
FROM docker.io/alpine:3.21
1+
FROM docker.io/alpine:3.22
22

33
LABEL org.opencontainers.image.source="https://github.com/haiku/infrastructure"
44
LABEL org.opencontainers.image.url="https://github.com/haiku/infrastructure/tree/main/containers/tools/pvbackup"
55
LABEL org.opencontainers.image.authors="Haiku, Inc."
66
LABEL org.opencontainers.image.vendor="Haiku, Inc."
77
LABEL org.opencontainers.image.description="pvbackup for Haiku Infrastructure"
88

9-
RUN apk add --update bash rsync gnupg rsync xz tar \
10-
&& if [ "$(uname -m)" = "x86_64" ]; then wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc; fi \
11-
&& if [ "$(uname -m)" = "aarch64" ]; then wget https://dl.min.io/client/mc/release/linux-arm64/mc -O /usr/local/bin/mc; fi \
12-
&& chmod 755 /usr/local/bin/mc \
9+
RUN apk add --update bash rsync gnupg rsync xz tar rclone \
1310
&& mkdir -p /pvs
1411

1512
ADD pvsync.sh /usr/local/bin/pvsync

containers/tools/pvbackup/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# ONLY UPDATE ONCE READY TO BUILD NEW RELEASE
2-
1.4
2+
2.0

containers/tools/pvbackup/pvsync.sh

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ if [[ $# -ne 2 ]]; then
66
exit 1
77
fi
88

9-
if ! [ -x "$(command -v mc)" ]; then
10-
echo 'Error: mc is not installed.' >&2
9+
if ! [ -x "$(command -v rclone)" ]; then
10+
echo 'Error: rclone is not installed.' >&2
1111
exit 1
1212
fi
1313

@@ -55,6 +55,17 @@ if [[ ! -d "$BASE/$VOLUME" ]]; then
5555
exit 1
5656
fi
5757

58+
rclone config create $S3_NAME s3 \
59+
provider=other env_auth=false access_key_id=$S3_KEY \
60+
secret_access_key=$S3_SECRET region=$S3_REGION \
61+
endpoint=$S3_HOST force_path_style=false \
62+
acl=private bucket_acl=private --no-output --obscure
63+
64+
if [[ $? -ne 0 ]]; then
65+
echo "Error: Problem encounted configuring s3! (rclone)"
66+
exit 1
67+
fi
68+
5869
case $ACTION in
5970
backup)
6071
SNAPSHOT_NAME=${VOLUME}_$(date +"%Y-%m-%d").tar.xz
@@ -76,38 +87,27 @@ case $ACTION in
7687
exit 1
7788
fi
7889
rm /tmp/$SNAPSHOT_NAME
79-
mc config host add $S3_NAME $S3_HOST $S3_KEY $S3_SECRET --api "s3v4"
90+
rclone copy /tmp/$SNAPSHOT_NAME.gpg $S3_NAME:$S3_BUCKET/pv-$VOLUME/$SNAPSHOT_NAME.gpg
8091
if [[ $? -ne 0 ]]; then
81-
echo "Error: Problem encounted configuring s3! (mc)"
82-
rm /tmp/$SNAPSHOT_NAME.gpg
83-
exit 1
84-
fi
85-
mc cp /tmp/$SNAPSHOT_NAME.gpg $S3_NAME/$S3_BUCKET/pv-$VOLUME/$SNAPSHOT_NAME.gpg
86-
if [[ $? -ne 0 ]]; then
87-
echo "Error: Problem encounted during upload! (mc)"
92+
echo "Error: Problem encounted during upload! (rclone)"
8893
rm /tmp/$SNAPSHOT_NAME.gpg
8994
exit 1
9095
fi
9196
if [[ -z "$S3_MAX_AGE" ]]; then
9297
echo "Cleaning up old backups for $VOLUME over $S3_MAX_AGE old..."
93-
mc find $S3_NAME/$S3_BUCKET/pv-$VOLUME/ --older-than "$S3_MAX_AGE" --exec "mc rm {}"
98+
rclone delete --min-age "$S3_MAX_AGE" $S3_NAME:$S3_BUCKET/pv-$VOLUME/
9499
fi
95100
echo "Snapshot of ${VOLUME} completed successfully! ($S3_BUCKET/pv-$VOLUME/$SNAPSHOT_NAME.gpg)"
96101
;;
97102

98103
restore)
99-
mc config host add $S3_NAME $S3_HOST $S3_KEY $S3_SECRET --api "s3v4"
100-
if [[ $? -ne 0 ]]; then
101-
echo "Error: Problem encounted configuring s3! (mc)"
102-
exit 1
103-
fi
104-
# We assume the latest is at the bottom of the mc ls.
104+
# We assume the latest is at the bottom of the rclone ls.
105105
# It seems to be true in my testing so far... but this feels sketch
106-
LATEST=$(mc ls -q $S3_NAME/$S3_BUCKET/pv-$VOLUME/ | tail -1 | awk '{ print $5 }')
106+
LATEST=$(rclone ls $S3_NAME:$S3_BUCKET/pv-$VOLUME/ | tail -1 | awk '{print $2}')
107107
echo "Found $LATEST to be the latest snapshot..."
108-
mc cp $S3_NAME/$S3_BUCKET/pv-$VOLUME/$LATEST /tmp/$LATEST
108+
rclone copy $S3_NAME:$S3_BUCKET/pv-$VOLUME/$LATEST /tmp/$LATEST
109109
if [[ $? -ne 0 ]]; then
110-
echo "Error: Problem encounted getting snapshot from s3! (mc)"
110+
echo "Error: Problem encounted getting snapshot from s3! (rclone)"
111111
rm /tmp/$LATEST
112112
exit 1
113113
fi

0 commit comments

Comments
 (0)