Created
November 1, 2016 11:54
-
-
Save mrsimonemms/311f32f6de8a3f35ce59d9b189649939 to your computer and use it in GitHub Desktop.
CLI Save to Dropbox
This file contains hidden or 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
## Add to crontab -e with "/bin/bash /root/DropboxBackup.sh" | |
## Taken from http://davehope.co.uk/Blog/backup-your-linux-vps-to-dropbox/ | |
#!/bin/bash | |
DROPBOX_USER="Your Dropbox username" | |
DROPBOX_PASS="Your Dropbox password" | |
DROPBOX_DIR="Directory in your dropbox account to store the backups, e.g. /backups" | |
BACKUP_SRC="/home /var/www /var/git /etc /root" | |
BACKUP_DST="/tmp" | |
MYSQL_SERVER="127.0.0.1" | |
MYSQL_USER="root" | |
MYSQL_PASS="Your MySQL password" | |
# | |
# Stop editing here. | |
NOW=$(date +"%Y.%m.%d") | |
DESTFILE="$BACKUP_DST/$NOW.tgz" | |
# | |
# Upload a file to Dropbox. | |
# $1 = Source file | |
# $2 = Destination file. | |
function dropboxUpload | |
{ | |
# | |
# Code based on DropBox Uploader 0.6 from http://www.andreafabrizi.it/?dropbox_uploader | |
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" | |
UPLOAD_FILE=$1 | |
DEST_FOLDER=$2 | |
# Login | |
echo -ne " > Logging in..." | |
curl -s -i -c $COOKIE_FILE -o $RESPONSE_FILE --data "login_email=$DROPBOX_USER&login_password=$DROPBOX_PASS&t=$TOKEN" "$LOGIN_URL" | |
grep "location: /home" $RESPONSE_FILE > /dev/null | |
if [ $? -ne 0 ]; then | |
echo -e " Failed!" | |
rm -f "$COOKIE_FILE" "$RESPONSE_FILE" | |
exit 1 | |
else | |
echo -e " OK" | |
fi | |
# Load home page | |
echo -ne " > Loading Home..." | |
curl -s -i -b "$COOKIE_FILE" -o "$RESPONSE_FILE" "$HOME_URL" | |
if [ $? -ne 0 ]; then | |
echo -e " Failed!" | |
rm -f "$COOKIE_FILE" "$RESPONSE_FILE" | |
exit 1 | |
else | |
echo -e " OK" | |
fi | |
# Get token | |
TOKEN=$(cat "$RESPONSE_FILE" | tr -d '\n' | sed 's/.*<form action="https:\/\/dl-web.dropbox.com\/upload"[^>]*>\s*<input type="hidden" name="t" value="\([a-z 0-9]*\)".*/\1/') | |
# Upload file | |
echo -ne " > Uploading '$UPLOAD_FILE' to 'DROPBOX$DEST_FOLDER/'..." | |
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 | |
echo -e " Failed!" | |
rm -f "$COOKIE_FILE" "$RESPONSE_FILE" | |
exit 1 | |
else | |
echo -e " OK" | |
rm -f "$COOKIE_FILE" "$RESPONSE_FILE" | |
fi | |
} | |
# Backup files. | |
mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$NOW-Databases.sql" | |
tar cfz "$DESTFILE" $BACKUP_SRC "$NOW-Databases.sql" | |
dropboxUpload "$DESTFILE" "$DROPBOX_DIR" | |
rm -f "$NOW-Databases.sql" "$DESTFILE" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment