Среда , 14 Ноябрь 2018
Home / Барахолка / Сохраняем бекапы на Dropbox
Dropbox backup
Dropbox backup

Сохраняем бекапы на Dropbox

И начнем мы с небольшого скрипта, который поможет нам автоматически делать бекапы наших проектов и переносить все на сервис Dropbox. На этом виртуальном сервисе мы и будем в последствии хранить наши бекапы. Для чего это нужно? у кого-то нет места хранить на фтп, у кого-то просто есть необходимость дублировать свои бекапы.

Автор: Алексей Раков

После затяжного отпуска, пора и делом заняться, а именно обновлять свой блог. всякими полезными вкусностями.

И начнем мы с небольшого скрипта, который поможет нам автоматически делать бекапы наших проектов и переносить все на сервис Dropbox. На этом виртуальном сервисе мы и будем в последствии хранить наши бекапы. Для чего это нужно? у кого-то нет места хранить на фтп, у кого-то просто есть необходимость дублировать свои бекапы.

Итак, сразу оговорюсь, этот способ не для тех кто сидит на шаред хостингах, этот способ для тех кто имеет доступ к ssh. Для начала создадим файл backup.sh, переведем его в unix формат и заполним следующим содержимым:

#!/bin/bash
DROPBOX_USER="мыло"
DROPBOX_PASS="пароль"
DROPBOX_DIR="/Backup"
BACKUP_SRC="абсолютный путь до сайта"
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"

Вверху скрипта, есть пункты, которые вы должны заполнить, пароль и логин от Dropbox, и остальные данные.

Сохраняем, переходим в менеджер файлов на сервере закачаем наш файл в любую удобную вам папку, например /root или /home, тут не принципиально. Открываем ssh клиент и вводим команду на исполнение скрипта, для проверки его работоспособности:

/bin/bash /root/backup.sh
или
/bin/bash /home/backup.sh

Проверяем, если скрипт отработал как надо и создал бекап, то считайте дело сделано, открываем на сервере /etc/cron.daily/ и кладем наш файлик туда, для того, чтобы он каждый день делал нам бекапы.

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

Рейтинг статьи

0%

Рейтинг

Оцените данный материал!

User Rating: Be the first one !

About artscripts

Check Also

сообщество vbulletin

Качественный подход к измерению успеха вашего онлайн сообщества (форума)

В данной статье, мы сначала посмотрим, как можно расширить восприятие интернет сообщества уделяя более пристальное …

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.