Skip to content

Instantly share code, notes, and snippets.

@andoriyu
Created April 6, 2010 03:52
Show Gist options
  • Save andoriyu/357207 to your computer and use it in GitHub Desktop.
Save andoriyu/357207 to your computer and use it in GitHub Desktop.
Backup script
#!/bin/bash
METHOD=$1
# 0 - не делать
# 1 - делать те которые указаны в MYSQL_DATABASES
# 2 - бэкапить все
DO_MYSQL="1"
MYSQL_DATABASE=""
MYSQL_USER=""
MYSQL_PASSWORD=""
MYSQL_DATABASES="awesomesite onemore"
# Внимание, для работы требуется, чтобы этот компьютер заходит на сервер без паролья (по ключу). как это сделать? а вот так: http://studik.org.ru/freebsd:ssh_public_authentication
SSH_LOGIN=""
SSH_SERVER=""
SSH_KEY=""
DIRS_TO_BACKUP="/etc /var/log /usr/local/etc"
#Сюда будет складываться бэкап. если сервер удаленный то в этот каталог на этом удаленном сервере.
BACKUP_DIR="/mnt/backup/"
BACKUP_FULLPATH="$BACKUP_DIR/$DATE_Y/$DATE_M/$DATE_D/"
#2010.04.06
DATE=`date +%Y.%m.%d`
DATE_Y=`date +%Y`
DATE_M=`date +%m`
DATE_D=`date +%d`
RANDOM_NUMBERS=`od -An -N2 -i /dev/random`
if [[$METHOD == "local"]]; then
mkdir -p $BACKUP_FULLPATH && \
tar -zcvf - $DIRS_TO_BACKUP | bzip2 > "$BACKUP_FULLPATH/configs.$DATE.$RANDOM_NUMBERS.tar.bz2" && \
echo `md5 $BACKUP_FULLPATH/configs.$DATE.$RANDOM_NUMBERS.tar.bz2` > "$BACKUP_FULLPATH/configs.$DATE.$RANDOM_NUMBERS.tar.bz2.md5" && \
if [[$DO_MYSQL == 1]]; then
for db in $MYSQL_DATABASES; do
mysql_dump $db -u $MYSQL_USER -p $MYSQL_PASSWORD | tar -zcvf -| bzip2 > "$BACKUP_FULLPATH/$db.$DATE.$RANDOM_NUMBERS.sql.tar.bz2" && \
echo `md5 $BACKUP_FULLPATH/$db.$DATE.$RANDOM_NUMBERS.sql.tar.bz2` > "$BACKUP_FULLPATH/$db.$DATE.$RANDOM_NUMBERS.sql.tar.bz2.md5 "
done
elsif [[$DO_MYSQL == 2]]; then
mysql_dump --all-databases -u $MYSQL_USER -p $MYSQL_PASSWORD | tar -zcvf -| bzip2 > "$BACKUP_FULLPATH/fullmysql.$DATE.$RANDOM_NUMBERS.sql.tar.bz2" && \
echo `md5 $BACKUP_FULLPATH/fullmysql.$DATE.$RANDOM_NUMBERS.sql.tar.bz2` > "$BACKUP_FULLPATH/fullmysql.$DATE.$RANDOM_NUMBERS.sql.tar.bz2.md5"
fi
elsif [[$METHOD == "ssh"]]; then
ssh -i $SSH_KEY $SSH_USER@$SSH_SERVER "mkdir -p $BACKUP_FULLPATH" && \
tar -zcvf - $DIRS_TO_BACKUP | bzip2 | ssh -i $SSH_KEY $SSH_USER@$SSH_SERVER "cat > $BACKUP_FULLPATH/configs.$DATE.$RANDOM_NUMBERS.tar.bz2 && \
echo `md5 $BACKUP_FULLPATH/configs.$DATE.$RANDOM_NUMBERS.tar.bz2` > $BACKUP_FULLPATH/configs.$DATE.$RANDOM_NUMBERS.tar.bz2.md5" && \
if [[$DO_MYSQL == 1]]; then
for db in $MYSQL_DATABASES; do
mysql_dump $db -u $MYSQL_USER -p $MYSQL_PASSWORD | tar -zcvf -| bzip2 | ssh -i $SSH_KEY $SSH_USER@$SSH_SERVER "cat > $BACKUP_FULLPATH/$db.$DATE.$RANDOM_NUMBERS.sql.tar.bz2 && \
echo `md5 $BACKUP_FULLPATH/$db.$DATE.$RANDOM_NUMBERS.sql.tar.bz2` > $BACKUP_FULLPATH/$db.$DATE.$RANDOM_NUMBERS.sql.tar.bz2.md5"
done
elsif [[$DO_MYSQL == 2]]; then
mysql_dump --all-databases -u $MYSQL_USER -p $MYSQL_PASSWORD | tar -zcvf -| bzip2 | ssh -i $SSH_KEY $SSH_USER@$SSH_SERVER "cat > $BACKUP_FULLPATH/fullmysql.$DATE.$RANDOM_NUMBERS.sql.tar.bz2 && \
echo `md5 $BACKUP_FULLPATH/fullmysql.$DATE.$RANDOM_NUMBERS.sql.tar.bz2` > $BACKUP_FULLPATH/fullmysql.$DATE.$RANDOM_NUMBERS.sql.tar.bz2.md5"
fi
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment