Time Capsule из Raspberry Pi своими руками

Raspberry Pi. Time Capsule своими руками

Дата Автор Dmitry11 комментариев 1 975 просмотров

Time Capsule – название линейки устройств Apple, представлявших собой Wi-Fi роутер, объединенный с однодисковым NAS начального уровня.

Помимо обычного хранения данных Time Capsule могла выступать в качестве сетевого диска для хранения инкрементальных бэкапов, создаваемых при помощи Time Machine – стандартной утилиты резервного копирования в macOS.

Несколько лет назад Apple свернула производство своих роутеров. И хотя последние поколения Time Capsule еще доступны в продаже, рациональность покупки их в 2020 году находится под вопросом: обладая не обновлявшимся несколько лет “железом” они стоят довольно-таки серьезных денег, сопоставимых со стоимостью современного брендового NAS среднего уровня.

В этой статье я опишу как на базе Raspberry Pi или другого Linux-компьютера собрать собственный аналог Time Capsule – сетевого диска с возможностью сохранения беспроводных бэкапов Time Machine.

Что нам понадобится

Для осуществления описываемых в этой статье действий понадобится:

  • Raspberry Pi 4
  • Внешний жесткий диск
  • Локальная сеть
  • Компьютер под управлением macOS

Поскольку при создании резервных копий по сети должны регулярно передаваться большие объемы данных, не рекомендую использовать устройства с подключением дисков через USB 2.0, а также со стамегабитным Ethernet-адаптером. Raspberry Pi 4 хорошо подходит на роль Time Capsule, а вот Raspberry Pi 3B и Raspbery Pi 3B+ уже нет.

Жесткий диск: требования и подключение

1. Емкость диска для бэкапов Time Machine должна быть как минимум равной по размеру суммарной емкости дисковых накопителей всех компьютеров Apple с которых планируется снимать резервные копии. А в идеале должна превышать их емкости хотя бы в 2 раза.

Например, для хранения резервных копий своего MacBook Pro c SSD на 128Гб я выделил 256Гб дискового пространства. А оригинальные Time Capsule производства Apple оснащаются жесткими дисками емкостью 2Тб и 3Тб.

2. Существует мнение, что для работы Time Machine диск для бэкапов должен быть обязательно отформатирован в нативных для macOS форматах HFS+ или APFS. На самом деле это не так: Time Machine прекрасно работает с дисками в формате ext4.

Поэтому если у вас уже есть сетевое файловое хранилище на ext4, то переразбивать диск и форматировать его в другую файловую систему не понадобится.

3. Для корректной работы Time Machine нужно выделить под бэкапы отдельный диск, либо отдельную сетевую шару с ограничением по предельному размеру на диске – и не пользоваться ей для хранения других файлов.

Это обусловлено тем, что Time Machine по мере заполнения диска должна автоматически удалять старые резервные копии, а степень заполненности она определяет вычитанием размера текущего бэкапа из размера диска (или из указанного предельного размера сетевой шары, если под резервное копирование выделен не весь диск целиком). При этом она не видит все остальные файлы и никак не учитывает их объем при расчете количества свободного пространства.


Для подключения USB-накопителей можно воспользоваться утилитой pmount, которая позволяет монтировать их в систему автоматически.

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

HardwarePartitions on Local DisksWipe PartitionsWipe and Re-LabelAdd primary partitionLinux EXT → Create

Create Filesystem

Mountext4/задаем имя раздела/ → Create

Способ 1. Подключение по протоколу AFP

Шаг 1. Устанавливаем Netatalk по инструкции из этой статьи.

Шаг 2. Добавляем сетевую шару, доступную для использования в качестве диска для Time Machine.

Для этого отредактируем файл конфигурации:

sudo nano /etc/netatalk/afp.conf

И добавляем туда новую сетевую шару:

[TimeCapsule]
    path = /путь/к/папке/для/timemachine
    time machine = yes
    spotlight = no
    vol size limit = 244141

Данная конфигурация добавляет новый сетевой ресурс с названием “TimeCapsule”, отключенной индексацией содержимого для Spotlight и ограничением по объему в 244141 мебибайта, что равняется 256Гб.

Если для Time Machine используется диск целиком, то vol size limit можно не указывать.

Альтернативный вариант конфигурации для Netatalk старых версий. Отредактируем AppleVolumes.default:

sudo nano /etc/netatalk/AppleVolumes.default

И добавим новую сетевую шару:

/путь/к/папке/для/timemachine	"TimeCapsule" options:tm,volsizelimit:244141

После изменения конфигурации перезапустим Netatalk:

sudo systemctl restart netatalk

Шаг 3. Монтируем диск в macOS

Time Capsule из Raspberry Pi своими руками

Для этого заходим в Finder, нажимаем Cmd+K и вводим в появившемся окне afp://ip-адрес-raspberry-pi

Затем подключаем том “TimeCapsule” в качестве сетевого диска.

Шаг 4. Устанавливаем диск для резервного копирования в Time Machine

Time Capsule из Raspberry Pi своими руками

Открываем Системные настройки → Time MachineВыбрать диск…

В появившемся окне выбираем примонтированный TimeCapsule.

Способ 2. Подключение по протоколу SMB

Шаг 1. Устанавливаем Samba по этой инструкции.

Если для работы Time Capsule по AFP-протоколу можно использовать и устаревшие версии Netatalk, то в случае с SMB нужно чтобы версия Samba была не старее 4.8.x

Поэтому после установки проверяем версию:

smbd -V

Шаг 2. Добавляем сетевую шару, доступную для использования в качестве диска для Time Machine.

Для этого отредактируем файл конфигурации:

sudo nano /etc/samba/smb.conf

И добавим туда новую сетевую шару:

[TimeCapsule]
comment = Time Capsule
path = /путь/к/папке/для/timemachine
browseable = yes
writeable = yes
create mask = 0600
directory mask = 0700
spotlight = no
vfs objects = catia fruit streams_xattr
fruit:aapl = yes
fruit:time machine = yes
fruit:time machine max size = 244141M

Как и в случае с Netatalk в конфигурации отключается индексирование Spotlight и задается ограничение по максимальному размеру шары. Если под резервное копирование планируется использовать весь диск, то параметр fruit:time machine max size можно удалить.

После редактирования конфигурации перезапустим Samba:

sudo systemctl restart smb.service

Шаг 3. Устанавливаем диск для резервного копирования в macOS

Если расшаренный по протоколу AFP диск будет доступен в интерфейсе Time Machine, то при расшаривании по SMB его там не окажется (по крайней мере так было у меня). Поэтому надо будет указать его в качестве пути для бэкапов консольной командой.

Открываем терминал и вводим:

sudo tmutil setdestination 'smb://логин:пароль@ip-адрес-raspberry-pi/TimeCapsule'

Time Capsule из Raspberry Pi своими рукамиПосле этого идем в Системные настройкиTime Machine и убеждаемся, что TimeCapsule начал отображаться в качестве текущего диска резервного копирования.

Заключение

Протестировав оба варианта я в итоге остановился на использовании SMB-протокола.

Поначалу AFP казался мне более перспективным, но по прошествию некоторого времени я столкнулся со скачками скорости при работе по нему. Иногда сетевые диски могли подвисать без видимых причин, а позднее восстанавливаться как ни в чем не бывало. Иногда небольшая порция инкрементальных обновлений резервной копии могла висеть в стадии загрузки часами.

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

Raspberry Pi 4 1/2/4 Gb RAMна AliExpress

11 комментария на «Raspberry Pi. Time Capsule своими руками»

  1. Добрый вечер.
    Блин, уже накатал жалобный и очень большой комментарий, что вообще никак не могу подключиться со всеми ошибками, как в итоге внезапно всё получилось. Спасибо вам огромадное за столь детальные туториалы. Целый день сегодня убил на это, делал все по англоязычным туториалам и ничего не получалось и сейчас всё завелось. Ура! Счастлив, как слон! Осталось разобраться, как вывести все это в нормальном виде в Finder, сейчас почему-то показывает только IP адрес, без названия и иконок. Еще раз спасибо!

  2. Блин и почему-то в файндере не открываются папки, пишет, что нет прав для этого. Хотя я вроде как выставил все права для этого. Как победить?

    • Добрый вечер. У меня были появлялись проблемы с правами доступа к уже работающим Samba-шарам после установки последнего апдейта для Каталины. Причина была в отсутствии строки “vfs objects” в конфиге (в конфиге из статьи эта строка уже есть). Ну и с правами доступа стоит перепроверить еще раз:

      sudo chmod 777 -R /путь/к/папке/для/timemachine
      sudo chown username:username /путь/к/папке/для/timemachine

      (вместо обоих username указать пользователя, под которым идет подключение к Samba)

      Кроме этого пока в голову ничего не идет.

          • Нет, в итоге не завелось. А что означает строка vfs objects в конфиге? Может не заводится из-за того, что у меня Big Sur стоит, а не Каталина? Там в настройках выставлен catia fruit streams_xattr сейчас.

          • Попробуйте перенести строки vfs_objects и fruit из конфига отдельной шары в раздел [global]. Это настройки для совместимости с SMB-клиентом в macOS.

            Вероятность что проблема в использовании беты Big Sur конечно есть, но небольшая. Скорее всего что-то не так с конфигом Samba. Либо же используется старая версия. Как я уже упоминал, нужна версия не старее 4.8.

            На крайний случай можно настроить через Netatalk. С ним гарантированно не будет проблем и его можно использовать параллельно с Samba – т.е., например, сетевые диски подключать по SMB-протоколу, а конкретно диск для бэкапов Time Machine по AFP.

          • Не знаю почему, не могу ответить на ваш комментарий, только на свой. Я вчера целый день убил на то, чтобы завести всё через Nettalk и вообще что-то ни в какую не получается это сделать. Сначала через всякие англоязычные туториалы пробовал, потом по вашему туториалу пробовал и все время выдает ошибки и только через Самбу хоть что-то завелось. Перенес сейчас строки vfs_objects и fruit из конфига в раздел [global] и вроде пошел бекап, посмотрим через какое-то время, выдаст опять ошибку или нет. С правами в файндере вроде как баг пофиксился как-то сам по себе.

          • Неа, не помогло. Начинает бекапить, проходит примерно полчаса, а потом выдает ошибку – “Резервная копия на диске таком-то уже используется”. Блин, ну что я делаю не так?

  3. Рано я обрадовался :( Какое-то время бекапится, полчаса наверно, а потом выдаёт вот что – Нет доступа к образу резервного диска «MacBook Pro — Denis.sparsebundle» (ошибка 16).
    Куда копать?

    • Меня последняя команда в терминале sudo tmutil setdestination ‘smb://логин:пароль@ip-адрес-raspberry-pi/TimeCapsule’ шлёт куда подальше и выдаёт ошибку – (error -1073741275)
      The backup destination could not be set. Не сможете помочь? И по моему у вас там лишняя кавычка в конце в команде.

Добавить комментарий для Dmitry Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

[Хамство, оскорбления и попытки крауд-маркетинга будут удалены]