Существует сумасшедшее количество плагинов для резервного копирования в WordPress. В этой статье мы будем использовать WP-CLI и Bash для резервного копирования WordPress или WooCommerce сайтов (всей папки и базы данных) и загрузить эти пакеты в Dropbox с вашего VPS или выделенного сервера. Мы также будем удалять старые резервные копии.
Обзор установки
Войдите в 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.
Теперь мы можем создать маркер доступа, программе Bash необходим Dropbox Uploader.
Под OAuth2 section, нажмите Generate.
Вы будете нуждаться в этом маркере доступа для 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.
Введите временный каталог и создайте тестовый файл
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 сайтов.
Установите 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 без каких-либо плагинов после удаления старых резервных копий!