jblu

jblu / seafile-backup.sh

Last active 6 months ago

Like 0
seafile-backup.sh Raw
1#!/bin/bash
2
3# Variables
4DATE=`date +%F`
5TIME=`date +%H%M`
6BACKUPDIR=/backup
7SEAFDIR=/home/sea
8BACKUPFILE=$BACKUPDIR/seafile-$DATE-$TIME.tar
9TEMPDIR=/tmp/seafile-$DATE-$TIME
10
11# Shutdown seafile
12$SEAFDIR/seafile-server-latest/seahub.sh stop
13$SEAFDIR/seafile-server-latest/seafile.sh stop
14
15# Create directories
16if [ ! -d $BACKUPDIR ]
17 then
18 echo Creating Backupdirectory $BACKUPDIR...
19 mkdir -pm 0600 $BACKUPDIR
20fi
21if [ ! -d $TEMPDIR ]
22 then
23 echo Create temporary directory $TEMPDIR...
24 mkdir -pm 0600 $TEMPDIR
25 mkdir -m 0600 $TEMPDIR/databases
26 mkdir -m 0600 $TEMPDIR/data
27fi
28
29# Dump data / copy data
30echo Dumping GroupMgr database...
31sqlite3 $SEAFDIR/ccnet/GroupMgr/groupmgr.db .dump > $TEMPDIR/databases/groupmgr.db.bak
32if [ -e $TEMPDIR/databases/groupmgr.db.bak ]; then echo ok.; else echo ERROR.; fi
33echo Dumping UserMgr database...
34sqlite3 $SEAFDIR/ccnet/PeerMgr/usermgr.db .dump > $TEMPDIR/databases/usermgr.db.bak
35if [ -e $TEMPDIR/databases/usermgr.db.bak ]; then echo ok.; else echo ERROR.; fi
36echo Dumping SeaFile database...
37sqlite3 $SEAFDIR/seafile-data/seafile.sb .dump > $TEMPDIR/databases/seafile.db.bak
38if [ -e $TEMPDIR/databases/seafile.db.bak ]; then echo ok.; else echo ERROR.; fi
39echo Dumping SeaHub database...
40sqlite3 $SEAFDIR/seahub.db .dump > $TEMPDIR/databases/seahub.db.bak
41if [ -e $TEMPDIR/databases/seahub.db.bak ]; then echo ok.; else echo ERROR.; fi
42
43echo Copying seafile directory...
44rsync -az $SEAFDIR/* $TEMPDIR/data
45if [ -d $TEMPDIR/data/seafile-data ]; then echo ok.; else echo ERROR.; fi
46
47# Start the server
48$SEAFDIR/seafile-server-latest/seafile.sh start
49$SEAFDIR/seafile-server-latest/seahub.sh start-fastcgi
50
51# compress data
52echo Archive the backup...
53cd $TEMPDIR
54tar -cf $BACKUPFILE *
55gzip $BACKUPFILE
56if [ -e $BACKUPFILE.gz ]; then echo ok.; else echo ERROR.; fi
57
58# Cleanup
59echo Deleting temporary files...
60rm -Rf $TEMPDIR
61if [ ! -d $TEMPDIR ]; then echo ok.; else echo ERROR.; fi