Автоматическое резервное копирование на Яндекс.Диск средствами systemd.
В прошлой статье из цикла я рассказывал, как настроить автоматическое архивирование ценных для вас директорий в специально отведенную для этого папку. Хотя такое решение вполне может однажды спасти вас от появления нескольких седых волос, оно далеко не совершенно. Стоит выйти из строя жесткому диску — и восстановить данные будет очень и очень непросто.

Сегодняшняя статья посвящена тому, как настроить создание и отправку резервных копий в удаленное хранилище, в качестве которого я буду использовать Яндекс.Диск. Помимо повышенной надежности такой подход хорош еще и тем, что позволяет получать доступ к своим данным откуда угодно.

В процессе мы познакомимся с новыми типами юнитов systemd: .timer, .mount и .automount.

1. Установка WebDAV и подготовка папки для автомонтирования.

Для начала установим пакет davfs2:

sudo apt-get install davfs2

Установка WebDAV и подготовка папки для автомонтирования

В процессе разрешаем непривилегированным пользователям монтирование.

Установка WebDAV и подготовка папки для автомонтирования

DAV или WebDAV представляет собой расширение протокола HTTP, позволяющее работать с удаленными файловыми системами. DAV имеет множество полезных функций и интересных способов применения, но углубляться в эту тему я не буду.

Поскольку для доступа к содержимому Яндекс.Диска нам небходимо пройти аутентификацию, добавим URL, логин и пароль от своей учетной записи в Яндексе в специальный файл, остальное WebDAV сделает за нас:

sudo gedit /etc/davfs/secrets

В конец открывшегося файла добавляем строку следующего содержания:

https://webdav.yandex.ru    ваш_логин   ваш_пароль

Если пароль содержит пробелы, символы решетки, двойных кавычек или обратный слеш (\), его необходимо заключить в двойные кавычки. Подробнее об этом можно прочитать в самом редактируемом файле.

Не только Яндекс.Диск поддерживает WebDAV. Вы можете использовать похожим образом многие другие хранилища, в том числе Dropbox.

Создадим папку, в которую будем монтировать нашу удаленную ФС и тут же передадим ее текущему пользователю:

sudo mkdir /media/$USER/YaDisk  
  
sudo mkdir /media/$USER/YaDisk/backups  
  
sudo chown -R $USER /media/$USER/YaDisk

Здесь и далее вместо переменной $USER можете использовать имя своего пользователя либо просто скопировать и ввести команды как есть. Во втором случае имя текущего пользователя будет подставлено автоматически.

На всякий случай проверим результат:

ls -l /media/$USER/

Если все прошло успешно, вы увидите, что папка создалась и принадлежит вашему пользователю.

Установка WebDAV и подготовка папки для автомонтирования

2. Пишем юниты .mount и .automount.

Юниты .mount и .automount описывают точки монтирования, а также условия, при которых те должны быть смонтированы. Их название в обязательном порядке должно отражать путь к самой точке монтирования, причем символ «/» заменяется на «-», а другие специальные символы… словом, лучше используйте обычную латиницу в названиях. Так, например, для точки монтирования /media/valera/YaDisk нам понадобятся юниты c названиями media-valera-YaDisk.mount и media-valera-YaDisk.automount.

Создаем эти два файла там, где и положено находиться пользовательским юнитам в Ubuntu 16.04, открывая их любым удобным текстовым редактором:

sudo gedit /etc/systemd/system/media-$USER-YaDisk.mount

Пишем юниты .mount и .automount

В открывшееся окно редактора помещаем следующее:

#Описание юнита
[Unit]
Description=Mount YaDisk
 
#Что и куда монтируем
[Mount]
What=https://webdav.yandex.ru
Where=/media/имя_вашего_пользователя/YaDisk
Type=davfs
Options=user,uid=имя_вашего_пользователя
 
#Использовать при обычной загрузке системы
[Install]
WantedBy=multi-user.target

Тем же способом открываем /etc/systemd/system/media-$USER-YaDisk.automount и добавляем в него строки, приведенные ниже:

#Описание
[Unit]
Description=Automount YaDisk
 
#Директория
[Automount]
Where=/media/имя_вашего_пользователя/YaDisk
 
#При загрузке в обычном режиме
[Install]
WantedBy=multi-user.target

Не забудьте оба раза сохранить содержимое, иначе файлы просто не будут созданы.
Чтобы не перезагружать систему, скажем systemd перечитать юниты:

sudo systemctl daemon-reload

Теперь активируем и добавляем в автозагрузку наш .automount юнит:

sudo systemctl start /etc/systemd/system/media-$USER-YaDisk.automount  
  
sudo systemctl enable /etc/systemd/system/media-$USER-YaDisk.automount

Юнит .mount включать и запускать нет необходимости.

3. Создаем скрипт, выполняющий резервное копирование и юниты .service и .timer, которые будут его запускать.

Откроем пока еще не существующий файл скрипта командой:

gedit /usr/local/bin/yadisk_backup

вставим следующий код в текстовый редактор и сохраним.

#!/bin/bash
current_date="$(date +'%F_%H_%M')"tar -czf /media/имя_вашего_пользователя/YaDisk/backups/$current_date.tar.gz /путь/к/папке

«/путь/к/папке» нужно заменить на настоящий путь к директории, резервные копии которой вы собираетесь создавать.

Создаем юнит yadisk_backup.service с таким содержимым:

[Unit]
Description = My backup service
[Service]
Type=simple
ExecStart=/usr/local/bin/yadisk_backup

и юнит yadisk_backup.timer:

[Unit]
Description=Run yadisk_backup every day
 
[Timer]
OnUnitActiveSec=1d
OnBootSec=60
 
[Install]
WantedBy=timers.target

Как вы уже знаете, поместить оба файла нужно в /etc/systemd/system. Перечитываем юниты, запускаем и включаем таймер:

sudo systemctl daemon-reload
 
sudo systemctl start yadisk_backup.timer
 
sudo systemctl enable yadisk_backup.timer

Первая строка в разделе [Timer] будет запускать таймер по прошествии суток с момента последней активации. Вторая строка запускает его через 60 секунд после загрузки.

Обратите внимание!

Юнит .timer управляет запуском юнита .service. Названия этих юнитов (части названия до точки) должны совпадать, иначе система просто не поймет, что именно должен запускать наш таймер. Если по каким-то причинам названия все же разные, полное имя файла .service можно задать и внутри таймера.

Бонус: доступ к Яндекс.Диску через файловый менеджер.

Во-первых, поздравляю тех, кто дочитал до этого места. Вы настоящие герои. Во-вторых, хочу обратить ваше внимание на полезный побочный эффект, возникающий в результате выполнения первых двух пунктов. Вот он:

Бонус: доступ к Яндекс.Диску через файловый менеджер

Яндекс.Диск монтируется в отведенную ему директорию, после чего с ним можно работать через файловый менеджер так же, как вы делаете это с локальными папками. Удобнее, чем пользоваться веб-интерфейсом или различными утилитами, не правда ли?

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

А вот и наши резервные копии:

Бонус: доступ к Яндекс.Диску через файловый менеджер

До новых статей!


Комментарии отключены