Time Machine из Raspberry Pi. Бэкапы для Mac OS без проводов

Сейчас я в основном использую Mac OS и встал вопрос бекапов. Делать бекапы по проводу совсем не хочется. Из беспроводных решений есть Time Capsule от Apple, но проблема в том, что устройство это очень старое. Вышло оно в 2008 году, обновлялось довольно редко, а в 2018 вообще было снято с производства. При этом они до сих пор продаются, но удивляет больше всего то, что цены на них до сих пор космические.

На сегодняшний день Time Capsule на 2Tb стоит 29990.

Есть еще два варианта, которые не плохие. Первый это какое-то более профессиональное хранилище типа Synology, но они тоже довольно дорогие. И второй это подключить жесткий диск к вашему роутеру, если у роутера есть поддержка Time Machine. У моего роутера, к сожалению, такой возможность нет. Поэтому я решил использовать для этого Raspberry Pi.

В интернете есть довольно большое количество мануалов, но когда я начал что-то делать по ним, оказалось, что большинство мануалов не рабочие. Некоторые “частично” рабочие. Например, в тех, где советовали использовать файловую систему HFS+ были проблемы с перезагрузкой. Если raspberry каким-то образом перезагружался, то мой диск не монтировался пока не проведешь проверку. И это совсем мне не подходило. Пришлось разбираться самому. Надеюсь, что вам этот мануал окажется полезным.

На мой взгляд, проблема тех мануалов заключалась в том, что в них есть рекомендация использовать файловую систему от Apple, которая называется HFS+. С этой файловой системой возникает много проблем. Например, после перезагрузки вашего Raspberry Pi жесткий диск отваливается и нужно его проверять. Поэтому основная рекомендация — использовать нормальные файловые системы, например Ext4.

Что нужно будет купить

Решение на Raspberry Pi обойдется в среднем в 8000р. Модель Raspberry pi можно брать любую, хватит даже Zero, но я бы советовал что-то поновее, так как там есть гигабитный Ethernet. Подключать рекомендую тоже проводом. Если есть деньги, лучше всего покупать самую свежую модель, будьте уверены, что raspberry всегда пригодятся дома. У меня сейчас работают одновременно четыре.

Кроме самого Raspberry нам нужно будет купить диск и какой-либо переходник. Лично я использую самый неудобный вариант: большой 3.5 дюймовый диск и большой переходник, для которого к тому же нужна розетка. Использую я этот вариант только по той причине, что у меня был и диск и этот переходник. Если бы я покупал все заново, то я бы его точно не выбрал. При этом нужно понимать, что этот вариант самый дешевый, так как 3.5 дюймовые диски аналогичного обьема будут самыми дешевыми. Кроме того, этот вариант можно сделать самым большим по размеру.

1

Я рекомендую использовать либо 2.5 внешний диск, либо обычный внешний диск 2.5 и докупить дешевый провод для подключения через usb. Этот вариант будет не сильно дороже, но значительно компактнее.

2

Есть еще и третий вариант. Он наиболее компактный. Это подключение m.2 диска к raspberry через дополнительную плату.

В этом случае решение становится совсем компактным и эстетичным, без каких-то лишних проводов.

3

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

4

Raspberry PI - https://s.click.aliexpress.com/e/_dXlgRvd

Raspberry Pi METALL CASE - https://s.click.aliexpress.com/e/_dToCA5t

USB to HDD 2.5 cable - https://s.click.aliexpress.com/e/_d7147XV

USD to HDD 3.5 cable - https://s.click.aliexpress.com/e/_dX0R1B5

Raspberry PI to NVME - https://s.click.aliexpress.com/e/_dTuEncf

HDD 2TB - https://s.click.aliexpress.com/e/_dZpybGF

Скачиваем дистрибутив

Сначала скачаем Raspberry Pi OS Lite. Версия лайт без графической оболочки. Подключать ее к монитору и клавиатуре мы не будем.

https://www.raspberrypi.org/downloads/raspberry-pi-os/

Записываем ее на флешку с помощью dd или c помощью Etcher.

Включаем SSH

Когда вы записали образ на флешку проверьте флешку, что на нее все записалось. И сразу же создайте в корне пустой файл с именем ssh . Таким образом мы сразу же включим ssh. В этом случае не нужно будет подключать мышку, клавиатуру, монитор к самому raspberry.

Убираем пароль от SSH и делаем вход по ключу

Я всегда убираю доступ по паролю и включаю доступ по ключу. Во-первых это безопаснее, а во вторых банально удобнее, ведь не нужно будет постоянно вводить пароль при входе через ssh.

Для начала нам надо сгеренировать ключи командой:

ssh-keygen

Теперь открываем файл:

vim authorized_keys

В него записываем публичный ключ компьютера с которого мы будем коннектиться в raspberry.

Задаем статический IP адрес для Raspberry PI

Этот шаг очень важный. Нам нужно задать статический IP адрес, так как наш мак будет искать тайм машину всегда по одному айпишнику.

Это можно сделать как и с помощью самого расперли пай, вот например ссылка на мануал, где рассказывается о том как это можно сделать - [https://raspberrypi.stackexchange.com/questions/37920/how-do-i-set-up-networking-wifi-static-ip-address/74428#74428]

Но как по мне, проще это сделать в админке вашего роутера. Тут я показать ничего не смогу, так как в каждом роутере это делается по-своему. Но обычно это делается просто нажатием на одну галочку.

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

Обновим наш пай

sudo apt-get update && sudo apt-get upgrade -y

Втыкаем диск

Важно подключать диск в USB 3.0, а не в USB 2.0

Диск можно и не форматировать, мы это сделаем через сам raspberry.

Форматируем диск

Для начала нам нужно понять какая буква у нашего Raspberry.

Для этого вызовем команду lsblk и посмотрим ее. В моем случае мой диск /dev/sda

sudo fdisk /dev/sda

Тут смотрим мануал нажимая m удаляем все старые разделы и создаем один новый. Сохраняем все.

Теперь создаем на отформатированном диске нужную файловую систему. Создаем обычную ext4

sudo mkfs.ext4 /dev/sda1

Узнаем UUID нашего диска

ls -lha /dev/disk/by-uuid

Получим что-то типа

drwxr-xr-x 7 root root 140 Jul  9 09:15 ..
lrwxrwxrwx 1 root root  15 Jul  9 09:15 123B-C92C -> ../../mmcblk0p1
lrwxrwxrwx 1 root root  15 Jul  9 09:15 706944a6-7d0f-4a45-2f1c-7fb07175e9f7 -> ../../mmcblk0p2
lrwxrwxrwx 1 root root  10 Jul  9 09:15 b22100d8-0aa8-4ec4-b01f-12cbad145e7c -> ../../sda1

Отсюда копируем UUID нашего диска

Создаем папку

Теперь мы должны создать папку в которую мы будем монтировать наш жесткий диск и дать ей необходимые права:

sudo mkdir /mnt/tm && sudo chmod -R 777 /mnt/tm && sudo chown pi:pi /mnt/tm

Монтируем диск

sudo vim /etc/fstab

Вставляем строку с вашим UUID

UUID=b32c00d8-0aa8-4ec4-b01f-18cbade45e7c /mnt/TimeMachine ext4 nofail,defaults 0 2

Теперь перезагрузимся для того чтбы проверить, что работает автоматическое монтирование. После перезагрузки выполним команду

df -h

Наш диск должен появиться и точка монтирования должна быть в /mnt/tm

Устанавливаем Nettalk

sudo apt-get install netatalk -y

И сразу же конфигурируем его

sudo vim /etc/netatalk/afp.conf

Содержимое должно быть вот таким:

;
; Netatalk 3.x configuration file
;

[Global]
; Global server settings
  mimic model = TimeCapsule6,106

[Time Machine]
  path = /mnt/tm
  time machine = yes
  valid users = pi

; [Homes]
; basedir regex = /xxxx

; [My AFP Volume]
; path = /path/to/volume

; [My Time Machine Volume]
; path = /path/to/backup
; time machine = yes

Теперь нам нужно отредактировать файл nsswitch.conf

sudo nano /etc/nsswitch.conf

Содержимое должно быть таким:

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         files
group:          files
shadow:         files
gshadow:        files

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Вроде бы у нас все настроено. Давайте попробуем запустить два этих сервиса:

sudo service avahi-daemon start

sudo service netatalk start

И сразу же можно проверить двумя этими командами стартовали они или нет:

sudo service netatalk status

sudo service avahi-daemon status

Fin

Теперь нужно перезагрузить Raspberry и если вы все сделали правильно, то ваш Mac OS увидит этот диск и вы можете делать бекапы. Я протестировал это решение в течение двух месяцев. Оно работает очень стабильно. Проблем с ним не было ни разу.

Contents

comments powered by Disqus