Следующая новость
Предыдущая новость

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

14.01.2021 12:42
Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

Содержание статьи

  • Готовим Raspberry Pi
  • Подключаемся к малине
  • Зависимости бэкап-скрипта
  • Создаем на сервере и качаем на малину дамп базы данных
  • Загружаем дамп базы данных в облако
  • Пишем скрипт
  • Автоматизируем запуск скрипта
  • Заключение

Прос­нись, самурай, вре­мя делать бэкапы баз дан­ных! Но что­бы не разорить­ся на плат­ных сер­висах, я покажу, как прев­ратить Raspberry Pi Zero W за условные $10 в лич­ную бэкап‑машину, которая будет заливать фай­лы в бес­плат­ный Google Drive.

Вот что нам сегод­ня понадо­бит­ся:

  • Raspberry Pi Zero W (при­дет­ся купить);
  • ка­бель micro USB (у тебя он уже валя­ется где‑то);
  • порт USB, выда­ющий минимум 1 А (в любом ком­пе такой есть, да и кир­пичик‑заряд­ка от ста­рого телефо­на у тебя тоже где‑то валя­ется);
  • кар­точка microSD (опять же, при­берись на пол­ках, там валя­ется минимум 4 Гбай­та памяти).

Идея в том, что­бы один раз пот­ратить­ся на малин­ку и получить пол­ностью авто­ном­ный девайс, который мож­но вру­бить куда угод­но — и он будет делать что‑нибудь полез­ное. Нап­ример, бэкапы базы дан­ных.

Готовим Raspberry Pi

Сна­чала ска­чай прог­рамму Etcher и образ Raspberry Pi OS lite без рабоче­го сто­ла. Рабочие сто­лы?! Там, куда мы нап­равля­емся, не нуж­ны рабочие сто­лы!

info

Я все это запус­каю на macOS, но дей­ствия, опи­сан­ные в этом руководс­тве, при­мени­мы и на дру­гих опе­раци­онных сис­темах.

Вставь microSD-кар­точку в компь­ютер, запус­ти Etcher и залей ска­чан­ный образ Raspberry Pi OS на кар­точку.

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

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

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов
Вот так выг­лядит этот самый «Linux»

Пе­ред тем как запихи­вать кар­точку в малину, нам нуж­но нем­ного нас­тро­ить опе­раци­онку. Давай нас­тро­им под­клю­чение к бес­про­вод­ному интерне­ту.

Фай­лы обя­затель­но редак­тируй какой‑нибудь тул­зой типа nano или vim, что­бы не накося­чить с тек­сто­вой кодиров­кой условным встро­енным в ОС блок­нотом. Соз­дай файл с наз­вани­ем wpa_supplicant.conf пря­мо в кор­не кар­точки. Содер­жание это­го фай­ла дол­жно быть сле­дующим.

country=DEctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1network={ ssid="мой_вайфай" scan_ssid=1 psk="пароль_от_вайфая" key_mgmt=WPA-PSK}

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов
Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

Ко­неч­но, замени мой_вайфай и пароль_от_вайфая на наз­вание и пароль от сво­ей сети WiFi. Нас­коль­ко я понял, эта вер­сия малины работа­ет толь­ко с бес­про­вод­ными сетями 2,4 ГГц.

Да­лее вклю­чи SSH на малине, так как управлять мы ей будем имен­но по SSH. Соз­дай пус­той файл в кор­не кар­точки с име­нем ssh. Можешь исполь­зовать коман­ду $ touch ssh.

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

Вот и все! Малина нас­тро­ена. Вставь кар­точку в малину и под­клю­чи ее к питанию! Убе­дись, что питание ты под­клю­чаешь в разъ­ем с помет­кой PWR. Пер­вый запуск малины зай­мет при­мер­но 90 секунд, ей нуж­но про­вес­ти пер­воначаль­ную нас­трой­ку.

Подключаемся к малине

Те­перь тебе нуж­но узнать IP-адрес малины. Можешь вос­поль­зовать­ся бес­плат­ной прог­раммой LanScan на macOS или любым ана­логом типа nmap на дру­гих плат­формах. Най­ди адрес с име­нем девай­са типа raspberry pi.

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

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

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

Для безопас­ности поменяй стан­дар­тный пароль коман­дой $ sudo raspi-config. Пос­ле переза­пус­ти малину коман­дой $ sudo shutdown -r now.

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов
Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

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

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов
Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

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

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов
Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

Те­перь ты офи­циаль­но в малине. Вре­мя писать скрип­ты бэкапа!

Зависимости бэкап-скрипта

Скрипт будет край­не прос­тым. Будем исполь­зовать тул­зу 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. Теперь можешь написать $ gdrive version на малине, что­бы убе­дить­ся, что все сра­бота­ло.

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов
Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов
Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

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

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов
Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов
Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов
Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов
Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

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

Нам нужно больше бэкапов! Делаем машину для резервного копирования за 10 баксов

info

Ес­ли ты исполь­зуешь какую‑то дру­гую базу дан­ных, а не Mongo, то про­игно­рируй все до сек­ции «Заг­ружа­ем дамп базы дан­ных в обла­ко». Прос­то убе­дись, что у тебя есть коман­да, которая поз­воля­ет тебе заг­ружать все дан­ные любимой базы дан­ных в опре­делен­ную пап­ку на малине. Эту пап­ку мы и будем заг­ружать в обла­ко.

Да, в этом руководс­тве я рас­ска­жу тебе толь­ко о Mongo. Ради крат­кости изло­жения и для показа­тель­нос­ти при­мера я решил выб­рать имен­но эту базу дан­ных.

Но и тут у нас будут неболь­шие проб­лемы из‑за огра­ничен­ности выб­ранно­го железа. На Raspberry Pi Zero далеко не уехать — про­цес­сор в нашей малине 32-бит­ный, а пос­ледняя Mongo запус­кает­ся лишь на 64-бит­ных сис­темах. Что же делать?

Пос­тупим очень хит­ро: за неиме­нием луч­шего решения вос­поль­зуем­ся прос­тым кос­тылем. Мы зас­тавим наш сер­вер, на котором уже уста­нов­лена Mongo, собирать дамп базы дан­ных — а потом будем его заг­ружать к себе в Google Drive.

По­чему бы нам прос­то тог­да не запус­кать все на сер­вере, раз уж на то пош­ло? Да потому что малина — это кибер­панк, который мы зас­лужили, а бэкапы всег­да дол­жны быть внеш­ними.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

1 год

7690 р.

1 месяц

720 р.

Я уже участник «Xakep.ru»

Источник

Последние новости