В предыдущей статье я рассказывал о PHPBU. Сейчас хочу рассказать как можно выгружать файлы бэкапов на Яндекс Диск.
Расширение PHPBU
Необходимо создать файл — WebdavSync.php с таким кодом:
<?php
namespace Fritool;
use \phpbu\App\Backup\Sync;
use \phpbu\App\Backup\Target;
use \phpbu\App\Result;
class WebdavSync implements Sync
{
private $someConfigValue;
public function setup(array $options)
{ }
public function sync(Target $target, Result $result)
{
$user = 'username';
$password = 'password';
$date = date('Y-m-d');
exec(
sprintf(
'curl -X MKCOL --user "%s:%s" https://webdav.yandex.ru/backups/%s',
$user,
$password,
$date
),
$output
);
unset($output);
exec(
sprintf(
'curl -T %s --user "%s:%s" https://webdav.yandex.ru/backups/%s/%s',
$target->getPathname(),
$user,
$password,
$date,
$target->getFilename()
),
$output
);
}
}
Команды для работы с WEB Dav я описывал в статье – CURL для WebDAV на примере с Яндекс Диском.
Далее нужно создать еще один файл в котором зарегистрируем новый sync для PHPBU.
Файл phpbu-extend.php
<?php
require __DIR__ . '/WebdavSync.php';
phpbu\App\Factory::register('sync', 'webdav', '\\Fritool\WebdavSync');
В файле phpbu.json надо добавить информацию об phpbu-extend.php
"bootstrap": "/home/www/phpbu-extend.php",
И добавить в раздел syncs
{
"type": "webdav"
}
В итоге файл phpbu.json должен получиться таким
{
"bootstrap": "/home/www/phpbu-extend.php",
"verbose": true,
"logging": [
{
"type": "json",
"target": "backup/json.log"
},
{
"type": "mail",
"options": {
"transport": "smtp",
"recipients": "my@email.com",
"sender.mail": "adapter:environment:SMTP_BACKUP_USER",
"smtp.host": "smtp.yandex.ru",
"smtp.port": "465",
"smtp.username": "adapter:environment:SMTP_BACKUP_USER",
"smtp.password": "adapter:environment:SMTP_BACKUP_PASSWORD",
"smtp.encryption": "ssl"
}
}
],
"adapters": [
{
"type": "env",
"name": "environment"
}
],
"backups": [
{
"name": "MySQL",
"source": {
"type": "mysqldump",
"options": {
"databases": "database_name",
"user": "adapter:environment:MYSQL_BACKUP_USER",
"password": "adapter:environment:MYSQL_BACKUP_PASSWORD"
}
},
"target": {
"dirname": "/path/to/backup/storing",
"filename": "mysql-database_name-%Y%m%d-%H%i.sql",
"compress": "bzip2"
},
"syncs": [
{
"type": "webdav",
}
],
"cleanup": {
"type": "stepwise",
"options": {
"daysToKeepAll": 10,
"daysToKeepDaily": 10,
"weeksToKeepWeekly": 1,
"monthToKeepMonthly": 1,
"yearsToKeepYearly": 1
}
}
}
]
}
Логин и пароль можно вынести в переменные окружения и через options в файле phpbu.json передавать в код для использования WEB Dav.