Содержание статьи
Вот что нам сегодня понадобится:
- 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.
Почему бы нам просто тогда не запускать все на сервере, раз уж на то пошло? Да потому что малина — это киберпанк, который мы заслужили, а бэкапы всегда должны быть внешними.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»