dendrite/aws-s3-backup/files/pleroma-s3-backup.sh
author Luke Hoersten <luke@hoersten.org>
Sat, 20 Jul 2024 13:51:46 -0500
changeset 234 f46b0f7e758c
parent 174 431c6d5e5dd4
permissions -rw-r--r--
Added task to ensure log2ram is running.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
88
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     1
#!/bin/bash
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     2
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     3
INSTANCE=$1
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     4
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     5
BUCKET="pleroma-${INSTANCE//_/-}-backup"
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     6
BACKUP_DIR="/tmp/s3-backup/$BUCKET"
157
5e5c9e605142 Add aws s3 versioning and lifecycles to backup.
Luke Hoersten <luke@hoersten.org>
parents: 109
diff changeset
     7
BACKUP_TAR="/tmp/s3-backup/$BUCKET.tgz"
88
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     8
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
     9
DB_NAME="pleroma_$INSTANCE"
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    10
CONFIG="/etc/pleroma/$INSTANCE.config.exs"
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    11
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    12
UPLOADS_DIR=`grep uploads $CONFIG | cut -d '"' -f 2`
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    13
STATIC_DIR=`grep static $CONFIG | cut -d '"' -f 2`
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    14
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    15
mkdir -m 775 -p "$BACKUP_DIR/"
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    16
chown root:postgres "$BACKUP_DIR/"
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    17
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    18
su postgres -c "pg_dump -d $DB_NAME --format=custom -f $BACKUP_DIR/$DB_NAME.pgdump"
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    19
cp $CONFIG "$BACKUP_DIR/"
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    20
cp -r $UPLOADS_DIR "$BACKUP_DIR/"
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    21
cp -r $STATIC_DIR "$BACKUP_DIR/"
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    22
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    23
tar -zc -f $BACKUP_TAR $BACKUP_DIR
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    24
aws s3 mb "s3://$BUCKET/"
157
5e5c9e605142 Add aws s3 versioning and lifecycles to backup.
Luke Hoersten <luke@hoersten.org>
parents: 109
diff changeset
    25
aws s3api put-bucket-versioning --bucket "$BUCKET" --versioning-configuration Status=Enabled
5e5c9e605142 Add aws s3 versioning and lifecycles to backup.
Luke Hoersten <luke@hoersten.org>
parents: 109
diff changeset
    26
aws s3api put-bucket-lifecycle-configuration --bucket "$BUCKET" --lifecycle-configuration "file:///usr/local/share/pleroma-s3-backup-lifecycle.json"
88
63efc98132f7 Added pleroma instance backup to s3.
Luke Hoersten <luke@hoersten.org>
parents:
diff changeset
    27
aws s3 cp $BACKUP_TAR "s3://$BUCKET/"
109
646e4b395cc8 Added pleroma backup cleanup and mediaproxy.
Luke Hoersten <luke@hoersten.org>
parents: 103
diff changeset
    28
646e4b395cc8 Added pleroma backup cleanup and mediaproxy.
Luke Hoersten <luke@hoersten.org>
parents: 103
diff changeset
    29
rm $BACKUP_TAR
646e4b395cc8 Added pleroma backup cleanup and mediaproxy.
Luke Hoersten <luke@hoersten.org>
parents: 103
diff changeset
    30
rm -r $BACKUP_DIR