Last active
March 30, 2016 19:07
-
-
Save themouette/71d79bf22ecdb1474ea6 to your computer and use it in GitHub Desktop.
backup-owncloud
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
BACKUP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )" | |
# Log a message. | |
function log { | |
echo -e " \033[32m*\033[0m ${1}" | |
} | |
# write an error message. | |
function error { | |
echo -e "\033[31m${1}\033[0m" | |
} | |
# Backups the owncloud server | |
log "Backup database" | |
echo "Please enter database password" | |
mysqldump --lock-tables -h localhost -u owncloud -p owncloud > "${BACKUP_DIR}/owncloud-sqlbkp_$(date +"%Y%m%d").bak" | |
log "Sync data" | |
rsync -Aax /home/owncloud/data/ "${BACKUP_DIR}/owncloud-dirbkp/" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# full and incremental backup script | |
# created 07 February 2000 | |
# Based on a script by Daniel O'Callaghan <[email protected]> | |
# and modified by Gerhard Mourani <[email protected]> | |
# | |
# Taken from http://www.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap29sec306.html | |
# Updated by Julien Muetton <[email protected]> | |
# | |
# To verify archive | |
# | |
# $ tar -tf /volume1/homes/admin/backups/owncloud-Sun.tar | |
# | |
# To restore from full backup | |
# | |
# $ cd / && tar xpf /volume1/homes/admin/backups/owncloud/owncloud-Sun.tar | |
# $ rsync --recursive --archive --verbose \ | |
# /volume1/homes/admin/owncloud -e ssh owncloud:/home/owncloud/ | |
# $ ssh owncloud | |
# $ cp /home/owncloud/config.php /var/www/owncloud/config/config.php | |
# $ # restore database as defined in owncloud manual | |
#Change the 5 variables below to fit your computer/backup | |
COMPUTER=owncloud # name of this computer | |
DIRECTORIES="/volume1/homes/admin/owncloud" # directoris to backup | |
BACKUPDIR=/volume1/homes/admin/backups # where to store the backups | |
TIMEDIR=/volume1/homes/admin/backups/last-full # where to store time of full backup | |
TAR=/bin/tar # name and locaction of tar | |
RSYNC=/usr/bin/rsync | |
SSH=/usr/bin/ssh | |
# ----------------------- Sync Remote Data | |
# Backup mysql | |
# Following this: http://stackoverflow.com/a/9293090/1070271 | |
# password and users are stored in server's /etc/mysql/.my.cnf | |
COMMAND="mysqldump --lock-tables -h localhost owncloud > '/home/owncloud/owncloud-sql-latest.bak'" | |
$SSH julien@owncloud "$COMMAND" | |
# Copy owncloud config to backup directory | |
# Note that I use a custom configuration location | |
COMMAND="chmod +w /home/owncloud/config.php \ | |
&& cp /var/www/owncloud/config/config.php /home/owncloud/config.php" | |
$SSH julien@owncloud "$COMMAND" | |
# Sync remote data locally | |
$RSYNC --recursive --archive --verbose \ | |
-e $SSH owncloud:/home/owncloud/ $DIRECTORIES | |
# ---------------------- Create Archives | |
#You should not have to change anything below here | |
PATH=/usr/local/bin:/usr/bin:/bin | |
DOW=`date +%a` # Day of the week e.g. Mon | |
DOM=`date +%d` # Date of the Month e.g. 27 | |
DM=`date +%d%b` # Date and Month e.g. 27Sep | |
# Create required directories | |
mkdir -p $BACKUPDIR $TIMEDIR | |
# On the 1st of the month a permanet full backup is made | |
# Every Sunday a full backup is made - overwriting last Sundays backup | |
# The rest of the time an incremental backup is made. Each incremental | |
# backup overwrites last weeks incremental backup of the same name. | |
# | |
# if NEWER = "", then tar backs up all files in the directories | |
# otherwise it backs up files newer than the NEWER date. NEWER | |
# gets it date from the file written every Sunday. | |
# Monthly full backup | |
if [ $DOM = "01" -o ! -e $BACKUPDIR/$COMPUTER-FULL.tar ]; then | |
# keep last month backup in case of a crash on Sunday 1st | |
if [ -e "$BACKUPDIR/$COMPUTER-FULL.tar" ]; then | |
mv $BACKUPDIR/$COMPUTER-FULL.tar $BACKUPDIR/$COMPUTER-FULL-PREVIOUS.tar | |
fi | |
NEWER="" | |
NOW=`date +%d-%b` | |
# Update full backup date | |
echo $NOW > $TIMEDIR/$COMPUTER-full-date | |
$TAR $NEWER -cf $BACKUPDIR/$COMPUTER-FULL.tar $DIRECTORIES | |
fi | |
# Weekly full backup | |
if [ $DOW = "Sun" ]; then | |
NEWER="" | |
NOW=`date +%d-%b` | |
# Update full backup date | |
echo $NOW > $TIMEDIR/$COMPUTER-full-date | |
$TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES | |
# Make incremental backup - overwrite last weeks | |
else | |
# Get date of last full backup | |
NEWER="--newer `cat $TIMEDIR/$COMPUTER-full-date`" | |
$TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment