Ранее мы показали, как сделать резервное копирование на Dropbox без плагина в WordPress. Если ваш сайт не такой большой, и не превышает лимит Dropbox в 2 ГБ, может удовлетворить ваши потребности. Тем не менее, если у вас есть больший сайт, то Google Drive может быть лучшим вариантом, так как вы получите 15 ГБ пространства.
Благодаря программе Gdrive можно загрузить прямо на Диск с помощью командной строки. Это означает , что мы можем использовать силу WP-CLI для резервного копирования нашей базы данных WordPress гораздо быстрее, чем с помощью WordPress плагинов в php. Сценарий находиться на GitHub.
Вы должны иметь доступ к оболочке вашего VPS или выделенный сервера, чтобы установить программное обеспечение Gdrive.
Автоматическое резервное копирование WordPress на Google Диске с помощью Bash скрипта
Обзор установки
- Установка GDrive, чтобы мы могли загрузить файлы на Google Диск
- Тест GDrive, прежде чем создать сценарий резервного копирования
- Создание сценария резервного копирования Google Drive и его планирование
Установка GDrive
На 64 бит Linux для Ubuntu, Debian или CentOS это установит последнюю GDrive. Если вам нужно другие версии или архитектуры процессоров, смотрите здесь.
wget "https://docs.google.com/uc?id=0B3X9GlR6EmbnQ0FtZmJJUXEyRTA&export=download" -O /usr/bin/gdrive
Если вы хотите запустить gdrive
под обычным пользователем, вы можете изменить владельца программы для этого пользователя.
sudo chown user /usr/bin/gdrive
Убедитесь , что gdrive
позволяет его владельцу чтение, запись и выполнение (7)
sudo chmod 755 /usr/bin/gdrive
Теперь вы можете запустить начальный мастер, выполнив
gdrive list
Вы получите URL, которому вы должны следовать в вашем браузере.
Go to the following url in your browser: https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=367226221053-7n0vf5akeru7on6o2fjinrecpdoe99eg.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=state
Вы получите всплывающее окно разрешения GDrive , а затем будет показан проверочный код.
Введите код подтверждения выше, и вы увидите список элементов на Диске.
Enter verification code: 4/sd56K1wms98AD3x8k987D3066UY7F5sLlkH54g98Hgtf Id Name Type Size Created 0B-zYdZ8Kfs5Zc3RhcnRlcl9maWxl Getting started bin 1.6 MB 2016-08-16 00:44:19
В случае ошибки:
Установить следующее
Для Ubuntu/Debian
apt-get install ca-certificates
Для CentOS
yum install ca-certificates
Тест GDrive
Давайте создадим папку резервных копий
gdrive mkdir "backups"
Вы получите идентификатор каталога, который необходим для загрузки элементов в эту папку.
Directory 0B-df756Kfs34G3dVUG67hfGt98j created
Вы можете проверить на Диске существование папки.
Мы собираемся создать временный файл для проверки загрузки
cd /tmp echo "test" > testfile.txt
Укажите идентификатор нашей папки резервных копий, который мы создали несколько шагов назад, --delete
означает, что мы удалим локальную копию файла.
gdrive upload --parent 0B-df756Kfs34G3dVUG67hfGt98j --delete /tmp/testfile.txt
получим ID папки
Uploading /tmp/testfile.txt Uploaded 0B-zYdZ8Kfs5ZbXRrbG9GXzBoSU0 at 7.1 B/s, total 7.1 B Removed /tmp/testfile.txt
Вы можете проверить свой Google Drive, чтобы увидеть, присутствие файла.
Это позволит получить идентификатор файла TestFile. Все файлы и папки имеют ID, так что вы можете ссылаться на них в сценариях для удаления.
Мы будем использовать эту технику в резервном Bash скрипте Google Drive для WordPress.
gdrive list --no-header | grep testfile | awk '{ print $1}'
Теперь настало время для создания резервной копии сценария Google Drive для WordPress.
Создание скрипта резервного копирования на Google Drive для WordPress
Теперь мы собираемся создать Bash скрипт, который будет использовать Gdrive, tar и WP-CLI
mkdir ~/scripts nano ~/scripts/googledrivebackup.sh
Это сценарий будет работает в последовательности, чтобы создать резервную копию каждой WordPress установки и загрузит его на Google Drive.
В переменной DAYSKEEP
можно указать, сколько дней вы хотели бы сохранить резервные копии WordPress, любые старые будут удалены из Google Drive.
#!/usr/bin/env bash #определите локальный путь для резервных копий BACKUPPATH="/tmp/backups" #определить путь удаленного резервного копирования BACKUPPATHREM="AndreyEx Backups" #путь к сайтам 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 #проверьте существование папки удаленного резервного копирования на gdrive BACKUPSID=$(gdrive list --no-header | grep $BACKUPPATHREM | grep dir | awk '{ print $1}') if [ -z "$BACKUPSID" ]; then gdrive mkdir $BACKUPPATHREM BACKUPSID=$(gdrive list --no-header | grep $BACKUPPATHREM | grep dir | awk '{ print $1}') fi #запуск цикла for SITE in ${SITELIST[@]}; do #удалить старую резервную копию, получить идентификатор папки и удалить, если существует OLDBACKUP=$(gdrive list --no-header | grep $DAYSKEPT-$SITE | grep dir | awk '{ print $1}') if [ ! -z "$OLDBACKUP" ]; then gdrive delete $OLDBACKUP fi # создать локальную папку архива, если она не существует if [ ! -e $BACKUPPATH/$SITE ]; then mkdir $BACKUPPATH/$SITE fi #всю папку Вордпресс cd $SITESTORE/$SITE #резервное копирование папки WordPress tar -czf $BACKUPPATH/$SITENAME/$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 #взять текущий ID папки SITEFOLDERID=$(gdrive list --no-header | grep $SITE | grep dir | awk '{ print $1}') #создать папку, если она не существует if [ -z "$SITEFOLDERID" ]; then gdrive mkdir --parent $BACKUPSID $SITE SITEFOLDERID=$(gdrive list --no-header | grep $SITE | grep dir | awk '{ print $1}') fi #загрузить архив WordPress gdrive upload --parent $SITEFOLDERID --delete $BACKUPPATH/$SITE/$DATEFORM-$SITE.tar.gz #загрузить базу данных WordPress gdrive upload --parent $SITEFOLDERID --delete $BACKUPPATH/$SITE/$DATEFORM-$SITE.sql.gz done #исправить разрешения sudo chown -R www-data:www-data $SITESTORE sudo find $SITESTORE -type f -exec chmod 644 {} + sudo find $SITESTORE -type d -exec chmod 755 {} +
Ctrl + X, Y и Enter, чтобы сохранить и выйти.
Теперь добавьте сценарий как cronjob так, чтбы он работал каждый день
crontab -e
Введите этот скрипт так, чтобы он работал ежедневно (в полночь), вы можете использовать абсолютные пути к сценарию (например , /home/user/scripts
или /root/scripts
)
@daily /bin/bash ~/scripts/googledrivebackup.sh
Ctrl + X, Y и Enter, чтобы сохранить и выйти.
Теперь ваши резервные копии сайтов на WordPress или WooCommerce будут автоматически загружены в Google Drive без необходимости полагаться на плагин WordPress.