blob: 32ad77f89ae53b94a1821226f25ea1ad69286de6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#!/bin/bash
export PYTHONPATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
source $(dirname "$PYTHONPATH")/venv/bin/activate
WORKERS=2
BACKUP_KEY="$HOME/.private/backupkey.pem"
BIND_PATH="127.0.0.1:9000"
[[ -z "$2" ]] || BIND_PATH="$2"
MAX_KEEP=`python -c "import wikiconfig; print wikiconfig.Config.backup_set_keep" 2>/dev/null`
S3_BUCKET=`python -c "import wikiconfig; print wikiconfig.Config.backup_s3_bucket" 2>/dev/null`
APPLICATION="MoinMoin.wsgiapp:application"
[[ -z "$DEBUG" ]] || APPLICATION="wsgi:application"
if [[ "$1" == "serve" ]]; then
gunicorn --timeout=300 --preload -w $WORKERS -b $BIND_PATH $APPLICATION
elif [[ "$1" == "cron" ]]; then
moin maint makecache
elif [[ "$1" == "reindex" ]]; then
moin index build --mode=rebuild
elif [[ "$1" == "backup" ]]; then
if [[ -z "$S3_BUCKET" || -z "$MAX_KEEP" || ! -r $BACKUP_KEY ]]; then
echo "Not properly configured"
exit 1
fi
FILENAME="$HOME/backup-`date +%Y%m%d%H%M%S`.bak"
# Backup first
#
# Place CACHEDIR.TAG files in cache directories to prevent backup.
# This is needed because thumbnail images in caches can cause lots of
# wasted backup space.
find "$HOME/wiki-data/" -type d -name 'cache' -exec bash -c 'echo "Signature: 8a477f597d28d172789f06886806bc55" > "{}/CACHEDIR.TAG"' \;
( cd $HOME && tar -cj --exclude-caches wiki-data/ | openssl aes-256-cbc -pass "file:$BACKUP_KEY" > $FILENAME )
s3cmd put --no-progress $FILENAME $S3_BUCKET
rm $FILENAME
# Then prune the backup set to a maximum of N files
ALL_FILES=( $(s3cmd ls $S3_BUCKET | awk '{ print $4 }' | sort -nr) )
for (( i=$MAX_KEEP ; i < ${#ALL_FILES[@]}; i++ )); do
s3cmd del ${ALL_FILES[i]}
done
else
moin $*
fi
|