Почему не срабатывает скрипт для бекапа VPS на Dropbox?

12
Z
На сайте с 19.12.2011
Offline
16
Zbt
1812

Добрый день.

Пытаюсь наладить скрипт для бекапа своего VPS, ОС: Debian. Бекапить будем на Dropbox.

Скрипт такой:


#!/bin/bash
DROPBOX_USER="*****@gmail.com"
DROPBOX_PASS="PASS"
DROPBOX_DIR="/Backup"
BACKUP_SRC="/home /var/www /etc /root"
BACKUP_DST="/tmp"
MYSQL_SERVER="localhost"
MYSQL_USER="user"
MYSQL_PASS="PASS"

#
# 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"

Запускаю под рутом /bin/bash /root/DropboxBackup.sh

Выдаёт:

: command not found.sh: line 10:

: command not found.sh: line 15:
'root/DropboxBackup.sh: line 21: syntax error near unexpected token `{
'root/DropboxBackup.sh: line 21: `{
M
На сайте с 24.10.2011
Offline
173
#1

надо файл сохранить в unix-формате, это окончания строк 0x0a вместо 0x0d0x0a

Z
На сайте с 19.12.2011
Offline
16
Zbt
#2
michaek:
надо файл сохранить в unix-формате, это окончания строк 0x0a вместо 0x0d0x0a

Cпасибо, эта проблема решилась, однако появились новые:


mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect
tar: Removing leading `/' from member names
> Logging in.../root/backup.sh: line 35: curl: command not found
grep: /tmp/du_resp_9484: No such file or directory
Failed!
M
На сайте с 24.10.2011
Offline
173
#3

Zbt, охо-хо... кто же так делает?

надо прописать правильный доступ к базе, курл поставить

M
На сайте с 16.09.2009
Offline
278
#4
michaek:
надо прописать правильный доступ к базе, курл поставить

Надо скрипты сперва кому-то нормальные написать ;)

Чтобы они обрабатывали ошибки, а не выплевывали непонятную обычным смертным лабуду.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
M
На сайте с 24.10.2011
Offline
173
#5

myhand, ну... это же сложно )

Z
На сайте с 19.12.2011
Offline
16
Zbt
#6
michaek:
Zbt, охо-хо... кто же так делает?
надо прописать правильный доступ к базе, курл поставить

Курл я поставил, а про базу вопрос не понял т.к. заполнил поля как надо, но вот выдаёт эту ошибку mysqldump: Got error: 1045: Access denied for user.

Сейчас результат работы выглядит вот так:

mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect

tar: Removing leading `/' from member names
> Logging in... OK
> Loading Home... OK
> Uploading '/tmp/2011.12.20.tgz' to 'DROPBOX/Backups/'... Failed!
M
На сайте с 24.10.2011
Offline
173
#7

Zbt, значит это все-таки неправильные реквизиты. ваш к.о.

Z
На сайте с 19.12.2011
Offline
16
Zbt
#8
michaek:
Zbt, значит это все-таки неправильные реквизиты. ваш к.о.

Дважды проверил. В pma заходит нормально.

M
На сайте с 16.09.2009
Offline
278
#9

Чудес не бывает - проверьте трижды. Если логин и пароль верны - может сервер указан неправильно.

Z
На сайте с 19.12.2011
Offline
16
Zbt
#10
myhand:
Чудес не бывает - проверьте трижды. Если логин и пароль верны - может сервер указан неправильно.

Ну сервер локалхост, пароль и логин я скопировал и вставил. Лишних пробелов нет.

Кроме root-а пробовал ещё одного пользователя со всеми привилегиями, тоже не прокатывает.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий