mirror of
https://github.com/Sevichecc/pleroma-backup-script.git
synced 2025-04-30 08:49:31 +08:00
Compare commits
8 commits
Author | SHA1 | Date | |
---|---|---|---|
|
1ef2e32aaa | ||
|
d65793fbc2 | ||
|
a84c7cd6d4 | ||
|
9a8e8cb036 | ||
|
3b1c7a4a8d | ||
|
f72209fc63 | ||
|
0a703e5ed3 | ||
|
f5412f4aae |
5 changed files with 73 additions and 67 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
.DS_Store
|
|
@ -1,28 +0,0 @@
|
|||
#!/usr/bin/python
|
||||
import random
|
||||
from mastodon import Mastodon
|
||||
|
||||
Mastodon.create_app(
|
||||
'backupbot',
|
||||
api_base_url = 'https://your_pleoma_instance.com',
|
||||
to_file = 'backupbot_clientcred.secret'
|
||||
)
|
||||
|
||||
mastodon = Mastodon(
|
||||
client_id = 'backupbot_clientcred.secret',
|
||||
api_base_url = 'https://your_pleoma_instance.com'
|
||||
)
|
||||
|
||||
mastodon.log_in(
|
||||
'bot_account_username',
|
||||
'bot_account_password',
|
||||
to_file = 'backupbot_usercred.secret'
|
||||
)
|
||||
|
||||
mastodon = Mastodon(
|
||||
access_token = 'backupbot_usercred.secret',
|
||||
api_base_url = 'https://your_pleoma_instance.com',
|
||||
feature_set = 'pleroma'
|
||||
)
|
||||
|
||||
mastodon.status_post('your_post_content')
|
37
backup.sh
37
backup.sh
|
@ -1,26 +1,31 @@
|
|||
#!/bin/bash
|
||||
source /etc/profile
|
||||
set -e
|
||||
source /etc/profile
|
||||
source ./.env
|
||||
|
||||
echo `date +"%Y-%m-%d %H:%M:%S"` " now starting backup"
|
||||
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
|
||||
echo "(${TIMESTAMP}) now starting backup"
|
||||
|
||||
echo "1.stop pleroma"
|
||||
sudo systemctl stop pleroma
|
||||
echo "1.Stopping pleroma"
|
||||
sudo systemctl stop pleroma
|
||||
|
||||
echo "2.dump database"
|
||||
sudo -Hu postgres pg_dump -d $PLEROMA_DB --format=custom -f ${BACKUP_PATH}/pleroma.pgdump
|
||||
echo "2.Dumping database"
|
||||
sudo -Hu postgres pg_dump -d $PLEROMA_DB --format=custom -f ${BACKUP_PATH}/pleroma_${TIMESTAMP}.pgdump
|
||||
|
||||
echo "3.pack uploads & static folder"
|
||||
tar -czf static.tar.gz --absolute-names ${PLEROMA_PATH}/static
|
||||
tar -czf uploads.tar.gz --absolute-names ${PLEROMA_PATH}/uploads
|
||||
echo "3.Packing uploads & static folder"
|
||||
tar -czf ${BACKUP_PATH}/static_${TIMESTAMP}.tar.gz -C ${PLEROMA_PATH} static
|
||||
tar -czf ${BACKUP_PATH}/uploads_${TIMESTAMP}.tar.gz -C ${PLEROMA_PATH} uploads
|
||||
|
||||
echo "4.copy config file"
|
||||
cp ${PLEROMA_CONFIG_PATH} ${BACKUP_PATH}
|
||||
echo "4.Restarting pleroma"
|
||||
sudo systemctl start pleroma
|
||||
|
||||
echo "5.backup to remote"
|
||||
./duplicacy.sh
|
||||
echo "5.Copying config file"
|
||||
cp ${PLEROMA_CONFIG_PATH} ${BACKUP_PATH}
|
||||
|
||||
echo "6.restart pleroma"
|
||||
sudo systemctl start pleroma
|
||||
echo "6.Backuping to remote"
|
||||
./duplicacy.sh
|
||||
|
||||
echo `date +"%Y-%m-%d %H:%M:%S"` " done!"
|
||||
echo "7.Deleting backups older than 7 days"
|
||||
find ${BACKUP_PATH} -type f -name '*.pgdump' -mtime +7 -exec rm {} \;
|
||||
|
||||
echo "(${TIMESTAMP}) done!"
|
||||
|
|
27
bot.py
Normal file
27
bot.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
#!/usr/bin/python
|
||||
from mastodon import Mastodon
|
||||
|
||||
Mastodon.create_app(
|
||||
'backupbot',
|
||||
api_base_url='https://your_pleoma_instance.com',
|
||||
to_file='backupbot_clientcred.secret'
|
||||
)
|
||||
|
||||
mastodon = Mastodon(
|
||||
client_id='backupbot_clientcred.secret',
|
||||
api_base_url='https://your_pleoma_instance.com'
|
||||
)
|
||||
|
||||
mastodon.log_in(
|
||||
'bot_account_username',
|
||||
'bot_account_password',
|
||||
to_file='backupbot_usercred.secret'
|
||||
)
|
||||
|
||||
mastodon = Mastodon(
|
||||
access_token='backupbot_usercred.secret',
|
||||
api_base_url='https://your_pleoma_instance.com',
|
||||
feature_set='pleroma'
|
||||
)
|
||||
|
||||
mastodon.status_post('your_post_content')
|
47
duplicacy.sh
47
duplicacy.sh
|
@ -1,31 +1,32 @@
|
|||
#!/usr/bin/expect
|
||||
#!/usr/bin/expect
|
||||
set ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
|
||||
set SECRET_ACCESS_KEY "YOUR_SECRET_ACCESS_KEY"
|
||||
set PASSWORD "YOUR_PASSWORD"
|
||||
|
||||
set timeout -1
|
||||
|
||||
# Function to handle authentication
|
||||
proc authenticate {} {
|
||||
global ACCESS_KEY_ID SECRET_ACCESS_KEY PASSWORD
|
||||
|
||||
expect "ID"
|
||||
send "$ACCESS_KEY_ID\r"
|
||||
|
||||
expect "Secret"
|
||||
send "$SECRET_ACCESS_KEY\r"
|
||||
|
||||
expect "password"
|
||||
send "$PASSWORD\r"
|
||||
}
|
||||
|
||||
# Run duplicacy backup command
|
||||
spawn duplicacy backup -threads 4
|
||||
authenticate
|
||||
expect "completed"
|
||||
|
||||
expect "ID"
|
||||
send "$ACCESS_KEY_ID\r"
|
||||
# Run duplicacy prune command (optional)
|
||||
spawn duplicacy prune -keep 7:30
|
||||
authenticate
|
||||
|
||||
expect "Secret"
|
||||
send "$SECRET_ACCESS_KEY\r"
|
||||
|
||||
expect "password"
|
||||
send "$PASSWORD\r"
|
||||
|
||||
##### (optional) Keep a revision every 7 days for revisions older than 30 days
|
||||
# expect "completed"
|
||||
# spawn duplicacy prune -keep 7:30
|
||||
|
||||
# expect "ID"
|
||||
# send "$ACCESS_KEY_ID\r"
|
||||
|
||||
# expect "Secret"
|
||||
# send "$SECRET_ACCESS_KEY\r"
|
||||
|
||||
# expect "password"
|
||||
# send "$PASSWORD\r"
|
||||
|
||||
expect eof
|
||||
# Allow user interaction after script completion
|
||||
interact
|
Loading…
Reference in a new issue