Содержание статьи
Вот что нам сегодня понадобится:
- Raspberry Pi Zero W (придется купить);
- кабель micro USB (у тебя он уже валяется где‑то);
- порт USB, выдающий минимум 1 А (в любом компе такой есть, да и кирпичик‑зарядка от старого телефона у тебя тоже где‑то валяется);
- карточка microSD (опять же, приберись на полках, там валяется минимум 4 Гбайта памяти).
Идея в том, чтобы один раз потратиться на малинку и получить полностью автономный девайс, который можно врубить куда угодно — и он будет делать что‑нибудь полезное. Например, бэкапы базы данных.
Готовим Raspberry Pi
Сначала скачай программу Etcher и образ Raspberry Pi OS lite без рабочего стола. Рабочие столы?! Там, куда мы направляемся, не нужны рабочие столы!
info
Я все это запускаю на macOS, но действия, описанные в этом руководстве, применимы и на других операционных системах.
Вставь microSD-карточку в компьютер, запусти Etcher и залей скачанный образ Raspberry Pi OS на карточку.


Достань карточку и вставь обратно. Она должна появиться диском под именем boot
.

Перед тем как запихивать карточку в малину, нам нужно немного настроить операционку. Давай настроим подключение к беспроводному интернету.
Файлы обязательно редактируй какой‑нибудь тулзой типа nano
или vim
, чтобы не накосячить с текстовой кодировкой условным встроенным в ОС блокнотом. Создай файл с названием wpa_supplicant.
прямо в корне карточки. Содержание этого файла должно быть следующим.
country=DEctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1network={
ssid="мой_вайфай" scan_ssid=1 psk="пароль_от_вайфая" key_mgmt=WPA-PSK}


Конечно, замени мой_вайфай
и пароль_от_вайфая
на название и пароль от своей сети WiFi. Насколько я понял, эта версия малины работает только с беспроводными сетями 2,4 ГГц.
Далее включи SSH на малине, так как управлять мы ей будем именно по SSH. Создай пустой файл в корне карточки с именем ssh
. Можешь использовать команду $
.

Вот и все! Малина настроена. Вставь карточку в малину и подключи ее к питанию! Убедись, что питание ты подключаешь в разъем с пометкой PWR
. Первый запуск малины займет примерно 90 секунд, ей нужно провести первоначальную настройку.
Подключаемся к малине
Теперь тебе нужно узнать IP-адрес малины. Можешь воспользоваться бесплатной программой LanScan на macOS или любым аналогом типа nmap
на других платформах. Найди адрес с именем девайса типа raspberry pi.

Теперь ты можешь подключиться прямо к малине! И все по воздуху! Подключись к пользователю pi
со стандартным паролем raspberry
. Можешь воспользоваться командой $
.

Для безопасности поменяй стандартный пароль командой $
. После перезапусти малину командой $
.


В принципе, можешь не выключать вход на малину по паролю, если малина никогда не будет доступна из интернета. Но если хочешь на 100 % обезопасить свои бэкапы, то включи вход по SSH только по ключам, создав файл ~/.
на малине с SSH-ключом, а после перезагрузи малину.


Ну и не забудь выставить PasswordAuthentication
в файле настройки SSH — /
!


Теперь ты официально в малине. Время писать скрипты бэкапа!
Зависимости бэкап-скрипта
Скрипт будет крайне простым. Будем использовать тулзу mongodump, чтобы забрать всю информацию из базы данных в одну папочку, а потом тулзу drive, чтобы залить всю прелесть на Google Drive. Проще пареной репы!
Запусти следующие команды на малине для установки drive
.
$ wget https://github.com/odeke-em/drive/releases/download/v0.3.9/drive_armv6
$ sudo mv drive_armv6 /usr/bin/gdrive
$ sudo chmod +x /usr/bin/gdrive
Заметь, что мы устанавливаем тулзу именно для архитектуры ARMv6. Теперь можешь написать $
на малине, чтобы убедиться, что все сработало.



Теперь тебе нужно настроить drive
, чтобы он смог работать с определенной папкой. Создай папку для бэкапов командой $
и после запусти команду $
, чтобы заставить drive
синхронизировать эту папку. Скрипт выдаст тебе ссылку, нужно будет авторизоваться в сервисе через браузер (уже на своем компе, откуда подключался к малине).





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

info
Если ты используешь какую‑то другую базу данных, а не Mongo, то проигнорируй все до секции «Загружаем дамп базы данных в облако». Просто убедись, что у тебя есть команда, которая позволяет тебе загружать все данные любимой базы данных в определенную папку на малине. Эту папку мы и будем загружать в облако.
Да, в этом руководстве я расскажу тебе только о Mongo. Ради краткости изложения и для показательности примера я решил выбрать именно эту базу данных.
Но и тут у нас будут небольшие проблемы из‑за ограниченности выбранного железа. На Raspberry Pi Zero далеко не уехать — процессор в нашей малине 32-битный, а последняя Mongo запускается лишь на 64-битных системах. Что же делать?
Поступим очень хитро: за неимением лучшего решения воспользуемся простым костылем. Мы заставим наш сервер, на котором уже установлена Mongo, собирать дамп базы данных — а потом будем его загружать к себе в Google Drive.
Почему бы нам просто тогда не запускать все на сервере, раз уж на то пошло? Да потому что малина — это киберпанк, который мы заслужили, а бэкапы всегда должны быть внешними.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее