/ Published in: Bash
Backup your website folder and mySQL Database to dropbox
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#!/bin/bash # # Website Backup Script # # Copyright (c) 2011 Keiran "affix" Smith <[email protected]> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # BASIC CONFIG FOLDER="" MYSQLDB="" MYSQLUSER="" MYSQLPASS="" # DROPBOX CONFIG LOGIN_EMAIL="" LOGIN_PASSWD="" END_ON_UPLOAD_ERROR=1 SKIP_LOADING_PAGE=1 ## DO NOT EDIT BELOW THIS LINE ## LOGIN_URL="https://www.dropbox.com/login" HOME_URL="https://www.dropbox.com/home" UPLOAD_URL="https://dl-web.dropbox.com/upload" COOKIE_FILE="/tmp/du_cookie_$RANDOM" RESPONSE_FILE="/tmp/du_resp_$RANDOM" BIN_DEPS="curl sed grep tr pwd" DATE=$(date '+%d-%m-%y') function remove_temp_files { rm -rf $COOKIE_FILE rm -rf $RESPONSE_FILE } function get_token { TOKEN=$(cat $1 | tr -d '\n' | sed 's/.*<form action="'$2'"[^>]*>\s*<input type="hidden" name="t" value="\([a-z 0-9]*\)".*/\1/') echo $TOKEN } function dropbox_upload { UPLOAD_FILE=$1 DEST_FOLDER=$2 curl -s -i -b $COOKIE_FILE -o $RESPONSE_FILE -F "plain=yes" -F "dest=$DEST_FOLDER" -F "t=$TOKEN" -F "file=@$UPLOAD_FILE" "$UPLOAD_URL" grep "HTTP/1.1 302 FOUND" "$RESPONSE_FILE" > /dev/null if [ $? -ne 0 ]; then if [ $END_ON_UPLOAD_ERROR -eq 1 ]; then remove_temp_files exit 1 fi fi } function do_backup { mkdir /tmp/$DATE mkdir /tmp/$DATE/html mkdir /tmp/$DATE/mysql cp -R $FOLDER /tmp/$DATE/html mysqldump -u $MYSQLUSER -p$MYSQLPASS $MYSQLDB > /tmp/$DATE/mysql/$MYSQLDB-$DATE.sql tar -pczf /tmp/backup-$DATE.tar.gz /tmp/$DATE > /dev/null } for i in $BIN_DEPS; do which $i > /dev/null if [ $? -ne 0 ]; then remove_temp_files exit 1 fi done #LOAD LOGIN PAGE if [ $SKIP_LOADING_LOGIN_PAGE -eq 0 ]; then curl -s -i -o "$RESPONSE_FILE" "$LOGIN_URL" if [ $? -ne 0 ]; then remove_temp_files exit 1 fi #GET TOKEN TOKEN=$(get_token "$RESPONSE_FILE" "\/login") #echo -e " > Token = $TOKEN" if [ "$TOKEN" == "" ]; then remove_temp_files exit 1 fi fi #LOGIN curl -s -i -c $COOKIE_FILE -o $RESPONSE_FILE --data "login_email=$LOGIN_EMAIL&login_password=$LOGIN_PASSWD&t=$TOKEN" "$LOGIN_URL" grep "location: /home" $RESPONSE_FILE > /dev/null if [ $? -ne 0 ]; then remove_temp_files exit 1 fi #LOAD HOME curl -s -i -b "$COOKIE_FILE" -o "$RESPONSE_FILE" "$HOME_URL" if [ $? -ne 0 ]; then remove_temp_files exit 1 fi #GET TOKEN TOKEN=$(get_token "$RESPONSE_FILE" "https:\/\/dl-web.dropbox.com\/upload") #echo -e " > Token = $TOKEN" if [ "$TOKEN" == "" ]; then remove_temp_files exit 1 fi do_backup dropbox_upload "/tmp/backup-$DATE.tar.gz" "/"
URL: http://affix.me