Pull to refresh

Архивация пользовательских файлов с Raspberry Pi на Яндекс Диск

Уважаемые господа,

В данный момент я изучаю возможности замечательной платы Raspberry Pi и как настоящий администратор столкнулся с проблемой бэкапов.
Причем с полными бэкапами, в отличие от Windows тут проблем нет, так как вся система записана на SD карточке, вставил ее в карт ридер и с помощью Win32DiskImager записал образ в файл. Но каждый день это делать очень не хочется, в связи с необходимостью включать компьютер, и достаточно продолжительным временем, которое занимает копирование даже 6GB карточки.

Так что задачей является сохранение файлов из пользовательского каталога в конце работы.

Прочитав на этом сайте статью «davfs2 и encfs на box.com» я решил сделать все по-современному через «облако».
Для разнообразия будем подключаться к «Яндекс диску». На котором и зарегистрируем почтовый ящик, для примера robots@yandex.ru, и подключим «Яндекс диск». Максимум 10GB в бесплатном варианте, но для наших целей более чем достаточно.

1. Настраиваем Raspbian wheezy


Не забываем обновиться
$ sudo apt-get update
$ sudo apt-get upgrade

Устанавливаем пакет поддержки davfs2
$ sudo apt-get install davfs2

Даем права пользователю pi
$ sudo usermod -a -G davfs2 pi

Создаем точку монтирования диска в домашнем каталоге
$ mkdir /home/pi/yandex.disk

Запишем логин и пароль в файл /etc/davfs2/secrets, где robots – имя почтового ящика, а password пароль для него
$ sudo echo "https://webdav.yandex.ru robots password" >> /etc/davfs2/secrets

И наконец пропишем наш новый диск в fstab
$ sudo nano /etc/fstab

Добавляем строку
https://webdav.yandex.ru /home/pi/yandex.disk  davfs  rw,noexec,auto,user,async,_netdev,uid=pi,gid=pi  0  0

Большинство описаний подключения дисков забывают параметр _netdev который напоминает системе, что это сетевой диск и не стоит его подключать до подключения Wi-fi или Ethernet. В данной строке пользователь pi основной пользователь под которым я работаю, что спасает от вы зова chown -R pi /home/pi/yandex.disk для раздачи прав.
Перегружаемся и если мы все сделали правильно радуемся подключенному сетевому диску.

2. Настраиваем сохранение данных

На ежедневной основе мне нужно сохранять несколько рабочих каталогов с учебными проектами на С и Питоне, не очень большого размера. Но учитывая общую «паранойю», мне бы не хотелось чтоб даже к этим файлам имели доступ посторонние. Так что озаботимся шифрованием данных.

В отличие от автора статьи «davfs2 и encfs на box.com» я не буду устанавливать шифрованную систему, ограничусь шифрованными архивами. Проведя исследования средств шифрования доступных для Raspberry Pi я выбрал самый простой в реализации 7-zip. Данный продукт обеспечивает шифрование AES-256, что достаточно для домашнего использования.

Устанавливаем пакет 7-zip
$ sudo apt-get install p7zip-full

И создаем файл full.backup.sh для автоматического создания архива
# BackUp library to network
# Удаляем архив в пользовательском каталоге
rm project.arhieve.7z
# Архивируем нужные каталоги с шифрацией, <password> пароль на архив, если оставить только параметр –p то пароль будет запрошен при старте скрипта. Каталоги projects и Arduino содержат файлы которые мне нужно сохранить.
7z a -t7z -mhe=on –p<password> project.arhieve.7z /home/pi/projects /home/pi/Arduino 
# Удаляем бэкапный архив 
rm /home/pi/yandex.disk/Backup/project.arhieve.back
# Переименовываем архив на облаке в файл *.back
mv /home/pi/yandex.disk/Backup/project.arhieve.7z /home/pi/yandex.disk/Backup/project.arhieve.back
# Переносим новый архив на облако
cp project.arhieve.7z /home/pi/yandex.disk/Backup/project.arhieve.7z

Создаем на Яндекс диске каталог Backup для записи архивов. Даем права на запуск и тестируем.
После второго запуска скрипта /home/pi/yandex.disk/Backup/ должна содержать две последние версии архива.

Данный скрипт я вызываю руками по мере надобности. Но можно наверное и автоматизировать этот процесс, например при выходе из X. И на всякий случай напомню, что формат 7z не сохраняет права на файлы и не может служить средством для восстановления системных файлов!

Готов выслушать исправления и замечания. Заранее спасибо.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.