07-04-2022
Установка Yandex.Disk. Переходим по адресу и выбираем подходящую версию.
wget http://repo.yandex.ru/yandex-disk/yandex-disk_latest_amd64.deb
sudo dpkg -i yandex-disk_latest_amd64.deb
Запускаем настройки:
yandex-disk setup
Использовать прокси-сервер? [y/N]: N
Авторизация
Если у вас ещё нет аккаунта на Яндексе, его можно завести по ссылке https://passport.yandex.ru/passport?mode=register
Откройте страницу 'https://ya.ru/device' и введите код ‘qweasdzxc’ в течение 300 секунд. Убедитесь, что вы авторизованы в браузере с нужным аккаунтом
Открываем адрес:
Токен сохранен в /home/drhellp/.config/yandex-disk/passwd
Настройка Яндекс.Диска
Введите путь к папке Яндекс.Диска (Оставьте пустым для использования папки '/home/drhellp/Yandex.Disk'):
Запускать Яндекс.Диск при входе в систему? [Y/n]: Y
Запуск демона...Готово
Для запуска демона после перезагрузки пропишем сервис в systemd. Создаем файл:
sudo nano /usr/lib/systemd/system/yandex-disk.service
Добавляем:
[Unit]
Description=Yandex Disk console client
Requires=network.target
[Service]
Type=forking
User=drhellp
Group=drhellp
ExecStart=/usr/bin/yandex-disk start -c /home/drhellp/.config/yandex-disk/config.cfg
RestartSec=60
Restart=always
[Install]
WantedBy=multi-user.target
Перезапускаем systemd:
systemctl --system daemon-reload
Запускаем службу yandex-disk.service:
systemctl start yandex-disk.service
Проверяем запуск службы командой:
systemctl status yandex-disk.service
Проверяем статус диска:
yandex-disk status
Статус ядра синхронизации: ожидание команды
Путь к папке Яндекс.Диска: '/home/drhellp/Yandex.Disk'
Всего: 10 GB
Занято: 0 B
Свободно: 10 GB
Максимальный размер файла: 51 GB
Размер корзины: 0 B
Добавляем службу yandex-disk.service в автозагрузку:
systemctl enable yandex-disk.service
Создаем папку scripts:
mkdir scripts
Создаем в ней скрипты:
- backup-day.sh - для ежедневного бэкапа
- backup-week.sh - еженедельного бэкапа
- backup-month.sh - ежемесячного бэкапа
На Yandex.Disk создаем следующую структуру каталогов:
- Yandex.Disk/backups/sites/drhellp/day - храним 7 архивов сайта за последние 7 дней
- Yandex.Disk/backups/sites/drhellp/week - хранятся 4 бэкапа за последние 4 недели
- Yandex.Disk/backups/sites/drhellp/month - храним все резервные копии сайта за все время
backup-day.sh:
#!/bin/bash
# Задаем переменные
# Текущая дата в формате 2020-12-01_04-10
date_time=`date +"%Y-%m-%d_%H-%M"`
# Куда размещаем backup
bk_dir='/home/drhellp/Yandex.Disk/backups/sites/drhellp/day'
# Директория для архива
inf_dir='/var/www/html/'
# Название непосредственно директории с файлами
dir_to_bk='drhellp'
# Пользователь базы данных
user='user'
# Пароль пользователя
password='pass'
# Имя базы для бэкапа
bd_name='base'
# Создание архива исходников
/usr/bin/tar -czvf $bk_dir/www_$date_time.tar.gz -C $inf_dir $dir_to_bk
# Выгружаем базу данных
/usr/bin/mysqldump --opt -v --databases $bd_name -u$user -p$password | /usr/bin/gzip -c > $bk_dir/mysql_$date_time.sql.gz
# Удаляем архивы старше 7-ми дней
/usr/bin/find $bk_dir -type f -mtime +7 -exec rm {} \;
backup-week.sh:
#!/bin/bash
# Задаем переменные
# Текущая дата в формате 2020-12-01_04-10
date_time=`date +"%Y-%m-%d_%H-%M"`
# Куда размещаем backup
bk_dir='/media/yandex/backups/sites/drhellp/week'
# Директория для архива
inf_dir='/var/www/html/'
# Название непосредственно директории с файлами
dir_to_bk='drhellp'
# Пользователь базы данных
user='user'
# Пароль пользователя
password='pass'
# Имя базы для бэкапа
bd_name='base'
# Создание архива исходников
/usr/bin/tar -czvf $bk_dir/www_$date_time.tar.gz -C $inf_dir $dir_to_bk
# Выгружаем базу данных
/usr/bin/mysqldump --opt -v --databases $bd_name -u$user -p$password | /usr/bin/gzip -c > $bk_dir/mysql_$date_time.sql.gz
# Удаляем архивы старше 30-ти дней
/usr/bin/find $bk_dir -type f -mtime +30 -exec rm {} \;
backup-month.sh:
#!/bin/bash
# Задаем переменные
# Текущая дата в формате 2020-12-01_04-10
date_time=`date +"%Y-%m-%d_%H-%M"`
# Куда размещаем backup
bk_dir='/home/drhellp/Yandex.Disk/backups/sites/drhellp/month'
# Директория для архива
inf_dir='/var/www/html/'
# Название непосредственно директории с файлами
dir_to_bk='drhellp'
# Пользователь базы данных
user='user'
# Пароль пользователя
password='pass'
# Имя базы для бэкапа
bd_name='base'
# Создание архива исходников
/usr/bin/tar -czvf $bk_dir/www_$date_time.tar.gz -C $inf_dir $dir_to_bk
# Выгружаем базу данных
/usr/bin/mysqldump --opt -v --databases $bd_name -u$user -p$password | /usr/bin/gzip -c > $bk_dir/mysql_$date_time.sql.gz\;
Добавляем запуск этих файлов в cron:
sudo nano /etc/crontab
# site backup to yandex.disk
# ежедневно в 2:20
20 2 * * * root /home/drhellp/scripts/backup-day.sh >/dev/null 2>&1
# еженедельно в 3:20 в воскресенье
20 3 * * 0 root /home/drhellp/scripts/backup-week.sh >/dev/null 2>&1
# ежемесячно в 4:20 1-го числа месяца
20 4 1 * * root /home/drhellp/scripts/backup-month.sh >/dev/null 2>&1
К сожалению удаляемые файлы попадают в корзину из которой их можно удалить только через вэб-интерфейс Yandex.Disk. Не забываем чистить корзину.
Источники: