Всякое настоящее образование добывается только путем самообразования (Н.А. Рубакин).

Bash скрипт автоматического резервного копирования WordPress на Dropbox с помощью WP-CLI

5 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
15 апреля 2017
Bash скрипт автоматического резервного копирования WordPress на Dropbox с помощью WP-CLI
Существует сумасшедшее количество плагинов для резервного копирования в WordPress. В этой статье мы будем использовать WP-CLI и Bash для резервного копирования WordPress или WooCommerce сайтов (всей папки и базы данных) и загрузить эти пакеты в Dropbox  с вашего VPS или выделенного сервера. Мы также будем удалять старые резервные копии.

Примечание:
Dropbox предоставляет 2 Гб дискового пространства бесплатно, если ваш сайт большего размера, то стоит рассмотреть возможность использования Google Drive вместо этого руководства.

Автоматическое резервное копирование WordPress на Dropbox с WP-CLI и Bash

Обзор установки

  • Создать приложение Dropbox для маркеров доступа
  • Проверьте загрузчик Bash Dropbox
  • Создайте скрипт резервного копирования
    • Расписание резервного копирования сценария для запуска ежедневно

Создание приложения Dropbox

Войдите в Dropbox в Developer section.

Под My app нажмите Create app.
раздел для разработчиков

В разделе Choose an API, выберите Dropbox API.

Под Choose the type of access you need, выберите App folder.

Назовите ваше приложение как вы хотите. Это будет имя папки в папке Dropbox.

Установите чекбокс I agree и нажмите Create app.

Настройка приложения Dropbox

Теперь мы можем создать маркер доступа, программе Bash необходим Dropbox Uploader.

Под OAuth2 section, нажмите Generate.

Генерировать доступ к DropBox

Вы будете нуждаться в этом маркере доступа для Dropbox Uploader.

Установить Dropbox Uploader

Dropbox Uploader требует curl, поэтому убедитесь, что он установлен.

sudo apt-get update
sudo apt-get install curl -y

 

Теперь загрузите dropbox_uploader и поместите его в /usr/bin.

sudo curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o /usr/bin/dropbox_uploader

 

Если вы хотите запустить dropbox_uploader как обычный пользователь, вы должны изменить владельца программы для этого пользователя.

sudo chown user /usr/bin/dropbox_uploader

 

Убедитесь , что dropbox_uploader позволяет его владельцу для чтения, записи и выполнения (7)

sudo chmod 755 /usr/bin/dropbox_uploader

 

Теперь вы можете запустить начальный мастер, выполнив

dropbox_uploader

 

Когда вы видите эту строку, вставьте ваш маркер Dropbox доступа, созданный ранее.

This is the first time you run this script, please follow the instructions:

 1) Open the following URL in your Browser, and log in using your account: https://www.dropbox.com/developers/apps
 2) Click on "Create App", then select "Dropbox API app"
 3) Now go on with the configuration, choosing the app permissions and access restrictions to your DropBox folder
 4) Enter the "App Name" that you prefer (e.g. MyUploader267311959129698)

 Now, click on the "Create App" button.

 When your new App is successfully created, please click on the Generate button
 under the 'Generated access token' section, then copy and paste the new access token here:

 # Access token: k5xJFA74LXsdAAAAAAKIZDIKH64ZSYsdf98DSAyjdya6a5FA8uLi95DB73fja15

 

Убедитесь, что все хорошо, нажав y

The access token is k5xJFA74LXsdAAAAAAKIZDIKH64ZSYsdf98DSAyjdya6a5FA8uLi95DB73fja15. Looks ok? [y/N]: y
   The configuration has been saved.

 

Ваш маркер доступа теперь можно найти в скрытом файле вашей домашней папки ~/.dropbox_uploader.

Время, чтобы проверить Dropbox Uploader.

Тест Dropbox Uploader

Введите временный каталог и создайте тестовый файл

cd /tmp
echo "test" > testfile.txt

 

Загрузить этот тестовый файл в Dropbox

dropbox_uploader upload testfile.txt /
 > Uploading "/tmp/testfile.txt" to "/testfile.txt"... DONE

 

Вы можете убедиться в том, что тестовый файл testfile.txt там, проверив папку Dropbox App.

Тестовая проверка файла

Теперь давайте удалим testfile.txt, так как мы знаем, что это работает

dropbox_uploader delete testfile.txt /
 > Deleting "/testfile.txt"... DONE

 

Если вы хотите быстрый способ увидеть все файлы в папке App, эта команда поможет

dropbox_uploader list / | awk '{print $3}'
"/"...
testfile.txt

 

Для того, чтобы получить все каталоги

dropbox_uploader list / | awk '{print $2}'
Listing
andreyex.ru

 

Теперь мы можем использовать это наряду с WP-CLI для резервного копирования WordPress и WooCommerce сайтов.

Создание сценария резервного копирования Dropbox

Установите WP-CLI и установите пользователя его владельцем с исполняемыми правами.

sudo wget -q https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -O /usr/bin/wp
sudo chown user /usr/bin/wp
sudo chmod 755 /usr/bin/wp

 

Создайте сценарий резервного копирования Dropbox

nano ~/scripts/dropboxbackup.sh

 

Вставьте этот скрипт, который создает резервные копии WordPress в архиве tar, базу данных с WP-CLI (с gzip), а затем загрузите пакеты в Dropbox.

Он будет проходить через все WordPress папки в пути SITESTORE.

Сценарий также удаляет старые резервные копии на основе переменной DAYSKEEP как на локальной системы и Dropbox.

#!/usr/bin/env bash
# Source: https://andreyex.ru
# Author: AndreyEx

#определить локальный путь для резервных копий
BACKUPPATH=/tmp/backups

#путь к WordPress установки
SITESTORE=/var/www

#Префикс даты
DATEFORM=$(date +"%Y-%m-%d")

#Дней сохранения
DAYSKEEP=7

#рассчитать дни как префикс имени файла
DAYSKEPT=$(date +"%Y-%m-%d" -d "-$DAYSKEEP days")

#создать массив объектов на основе названий папок
SITELIST=($(ls -lh $SITESTORE | awk '{print $9}'))

#убедитесь, что папка существует для резервного копирования
mkdir -p $BACKUPPATH

#Запуск цикла
for SITE in ${SITELIST[@]}; do
    #проверяем, если есть старые резервные копии то удаляем их
    EXISTS=$(dropbox_uploader list /$SITE | grep -E $DAYSKEPT.*.tar.gz | awk '{print $3}') 
    if [ ! -z $EXISTS ]; then
        dropbox_uploader delete /$SITE/$DAYSKEPT-$SITE.tar.gz /$SITE/
        dropbox_uploader delete /$SITE/$DAYSKEPT-$SITE.sql.gz /$SITE/
    fi

    echo Backing up $SITE
    #введите папку WordPress
    cd $SITESTORE/$SITE
    if [ ! -e $BACKUPPATH/$SITE ]; then
        mkdir $BACKUPPATH/$SITE
    fi

    #резервное копирование папки WordPress
    tar -czf $BACKUPPATH/$SITE/$DATEFORM-$SITE.tar.gz .

    #резервное копирование базы данных WordPress
    wp db export $BACKUPPATH/$SITE/$DATEFORM-$SITE.sql --allow-root --skip-themes --skip-plugins
    cat $BACKUPPATH/$SITE/$DATEFORM-$SITE.sql | gzip > $BACKUPPATH/$SITE/$DATEFORM-$SITE.sql.gz
    rm $BACKUPPATH/$SITE/$DATEFORM-$SITE.sql

    #загружаем пакеты
    dropbox_uploader upload $BACKUPPATH/$SITE/$DATEFORM-$SITE.tar.gz /$SITE/
    dropbox_uploader upload $BACKUPPATH/$SITE/$DATEFORM-$SITE.sql.gz /$SITE/
done

#если вы хотите удалить все локальные резервные копии
#rm -rf $BACKUPPATH/*

#удаляем старые резервные копии локально в течение нескольких дней DAYSKEEP
find $BACKUPPATH -type d -mtime +$DAYSKEEP -exec rm -rf {} \;

#Исправить разрешения
sudo chown -R www-data:www-data $SITESTORE
sudo find $SITESTORE -type f -exec chmod 644 {} +
sudo find $SITESTORE -type d -exec chmod 755 {} +

 

Я рекомендую протестировать сценарий резервного копирования WordPress на Dropbox.

sudo bash ~/scripts/dropboxbackup.sh

 

Теперь добавьте сценарий как cronjob так, чтобы он работал каждый день

crontab -e

 

Введите скрипт, который будет работать в полночь каждый день, вы можете использовать абсолютные пути к сценарию (например, /home/user/scripts или /root/scripts)

@daily /bin/bash ~/scripts/dropboxbackup.sh

 

Ctrl + X, Y и Enter, чтобы сохранить изменения и выйти

Теперь каждый день скрипт резервного копирования Dropbox будет работать на экспорт базы данных с WP-CLI, установку WordPress в архиве tar и загружать их на Dropbox без каких-либо плагинов после удаления старых резервных копий!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 185

Если статья понравилась, то поделитесь ей в социальных сетях:

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close