Apple time machine linux

Настройка Time Machine сервера в Ubuntu

Продолжая тему домашнего сервера на базе Ubuntu, в этой статье мы рассмотрим как настроить бекап сервер Time Machine. Статья будет интересна главным образом пользователям компьютеров Apple, поскольку Time Machine сервер это исключительно Мак-ориентированный сервис. Time Machine – это система резервного копирования данных, которая встроена в операционную систему Mac OS X. Она очень проста в настройке и использовании; принцип действия заключается в том, что каждый час на внешний накопитель дописываются изменения произошедшие в файловой структуре. В случае поломки системного диска компьютера, или случайного удаления файлов, можно вернуть из резервной копии либо пропавшие файлы либо систему целиком. Клиент, то есть программа, которая выполняет резервное копирование есть в Mac OS X. Сервером же может выступать Time Capsule, Air Port Extreme с подключенным жестким диском, либо компьютер-сервер с операционной системой Mac OS X Server, например Mac mini. Также, при отсутствии сервера, для бекапа можно использовать локально подключенный USB диск. Однако, с помощью некоторых ухищрений, можно превратить в Time Machine сервер любой компьютер под управлением ОС семейства Linux. Так как я выбрал Ubuntu в качестве ОС своего домашнего сервера, то и рассматривать настройки будем на примере нее.

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

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

Например, на моем домашнем сервере информация организована так:

/media/TM – том для Time Machine
/media/Data/AxisCaptured
/media/Data/AtomStore

Где media – это точка монтирования, TM и Data – это логические разделы, на которые разбит диск, AxisCaptured и AtomStore – папки в логическом разделе Data.

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

Например, я делаю так:

sudo chown andrey:root /media/TM
sudo chown motion:admin /media/Data/AxisCaptured
sudo chown andrey:admin /media/Data/AtomStore

andrey:root для тома TM гарантирует, что кроме меня больше никто не получит доступ к бекапному разделу (root не в счет).
motion:admin для папки AxisCaptured гарантирует, что программа motion сможет беспрепятственно писать в эту папку свои файлы, а члены группы admin будут иметь к ней доступ.

Теперь, когда структура для хранения будущей информации создана, можно приступить к установке необходимого ПО. Нам понадобится файловый протокол AFP и протокол автоматического обнаружения сервисов Bonjour (он же Zeroconf). Отметим, что AFP и Bonjour это зарегистрированные марки Apple, а в мире свободного ПО эти же технологии называются соответственно Netatalk и Avahi.

Устанавливаем Netatalk стандартным образом:

sudo apt-get install netatalk

Читайте также:  Замена шлейфа iphone x динамик

Открываем конфигурационный файл Netatalk:

sudo pico /etc/netatalk/AppleVolumes.default

и вписываем в него строку на подобие такой (свои строки лучше добавлять в конец файла, не трогая его содержимое, так как там все очень хорошо задокументировано и абсолютно все закомментировано):

/media/TM «Time Machine» allow:andrey options:usedots,upriv,tm

Для всех остальных файл-шар (не для Time Machine бекапа) можно опустить опцию tm:

/media/Data/AtomStore «Data» allow:andrey options:usedots,upriv

Для некоторых папок, которые вы хотели бы предоставить лишь для чтения, независимо от того какой пользователь подключился, используйте опцию read-only, точнее ro:

/media/Data/AxisCaptured «Data» allow:andrey options:usedots,upriv,ro

У меня конфиг такой:

Параметры, которые использовались:

allow – позволяет перечислить через запятую имена пользователей и групп, которым разрешено использовать ресурс. Имена групп должны начинаться с @.
usedots – когда установлена эта опция, некоторые имена файлов становятся недопустимыми. Например, .Parent и все что начинается с .Apple.
upriv – заставляет использовать AFP3-Unix права доступа. Разработчики рекомендуют ознакомиться с «новыми Unix-правами» которые используются в Mac OS X прежде чем использовать эту опцию
tm – включает поддержку Time Machine для этого тома
ro – read only

Подробнее о конфигурационном файле Netatalk можно почитать на странице разработчика проекта: http://netatalk.sourceforge.net/2.0/htmldocs/AppleVolumes.default.5.html

sudo /etc/init.d/netatalk restart

Можно проверить сканером портов, и убедиться что открылся 548-й порт, используемый Netatalk/AFP.

Теперь нас интересует Bonjour, простите, Avahi. Avahi уже должен быть установлен если используется хотя бы Ubuntu 10.04. Поэтому устанавливать его не нужно, нужно только настроить.

sudo pico /etc/nsswitch.conf

И добавляем mdns в конце строки «hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4» чтобы выглядело так:

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

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

Перейдите в каталог /etc/avahi/services/ и создайте там новый файл с именем afpd.service (для этого удобно использовать команду touch). Используя свой любимый текстовый редактор (консольный nano, либо графический gedit) откройте созданный файл (/etc/avahi/services/afpd.service) и скопируйте в него это содержимое:

model=Xserve – это тот самый параметр, который указывает, какую иконку использовать для ресурса. В данном случае сервер в сети будет выглядеть как Xserve RAID.

sudo service avahi-daemon restart

Можно вообще перезагрузить сервер. Теперь, прежде чем подключить том Time Machine, нужно залогиниться на сервер через боковое меню Finder:

потом открыть настройки TM, и нажать «Выбрать диск»:

Time Machine увидит сетевой том, которому мы поставили опцию ТМ:

Выбираем этот том, Тime Мachine попросит ввести пароль к нему:

И потом можно отключиться от сервера – Тime Мachine сама будет периодически монтировать свой сетевой том для бекапа, независимо от того подключен пользователь к серверу или нет. Подробнее о механизме работы Time Machine в Mac OS X можно почитать в статьях:

1 Trackback / Pingback

Оставить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Источник

Делаем свою Time Machine для Линукса

После интенсивного пользования time machine на маках и пару ситуаций когда она реально пригодилась (были варианты когда пришлось поставить систему из бэкапов и варант когда пришлось откатывать назад после проблем), возникла мысль а собственно почему такой удобной системы нет на линуксе. После исследования вопроса и опроса знакомых линуксоидов оказалось что:
1. сделать такую систему можно просто за пару минут на коленках
2. странно, но как-то никто собственно не в курсе что это можно поднять настолько быстро.
3. наша time machine для линукса будет с маджонгом и гейшами.

Читайте также:  Что может делать айфон 12 про

Как раз был ненужный appletv первого поколения из которого было решено сделать небольшой сервер на hardeded linux для сбора логов и всяких вспомогательных целей. После установки hardened gentoo как раз и возник вопрос как его бы бэкапить чтобы весь и сразу диск — чтобы можно было при полном отказе накатить бэкап на новый диск или на полностью новый appletv (хм, если потом такой найду конечно), или выборочно востанавливать удалённые или потерянные файлы просто ссылаясь на опеределенную дату.

Как работает time machine? Довольно просто, первый слепок системы просто копируется как файлы со всеми атрибутами в Backups.backupdb/hostname/YYYY-MM-dd-hhmmss, +делается симлинк Latest указывающий на последний слепок. А уже при втором слепке происходит следующее: сравниваются даты файлов и если файл не поменялся то вместо новой копии файла делается hardlink на файл из предыдущего слепка. Тогда если нет изменений файлов то весь новый слепок будет полностью ссылаться на предыдущий. Слепки будут отличатся только новыми/модифицированными/удалёнными файлами. В результате можно просто удалить любой слепок (каталог типа YYYY-MM-dd-hhmmss) и ничего не поломается. Самая ближайшая ассоциация — умный указатель в c++ например: когда пропадает последняя ссылка на файл (из всех слепков) он и удалится с дисков.

Очень удобная система с точки зрения просмотра предыдущих файлов, их востановления, удаления старых бэкапов итд. Вплоть до восстановления всей системы из слепка.

После исследования всех известных мне систем бэкапа под линукс, они были отброшены как немного не то что нужно. Зато нашлось простейшее решение с rsync в одну строчку.

rsync имеет чудесную опцию —link-dest которая как раз и делает всю выше описанную логику по сравнению с предыдущими слепками и создания hardlink-ов. Опция -x исключит все примонтированные файловые системы как /proc /sys /dev итд. —delete будет удалять файлы которые пропадут.

Вся time machine будет одним скриптом как:

#!/bin/sh
date=`date «+%Y-%m-%d-%H%M%S»`
SRC=/
DST=/mnt/backup-hdd/Backups.backupdb/atv

rsync -ax \
—delete \
—link-dest=../Latest \
$SRC $DST/Processing-$date \
&& cd $DST \
&& mv Processing-$date $date \
&& rm -f Latest \
&& ln -s $date Latest

Копируем скрипт в /etc/cron.hourly и вуаля у нас бэкапы как в time machine.
Если наша система слетела, мы можем загрузтся со флешки, отформатировать раздел, и запустить тот же rsync в обратную сторону, потом перегрузится или сделать chroot и система опять рабочая.

Еще положим в /etc/cron.daily простой скрипт который будет удалять hourly слепки предыдущий дней оставляя только 24 за последний день, потом удалять daily слепки за предыдущие месяцы итд — как в apple time machine, только выбирайте вашу последовательность.

Хотим заливать бэкапы по сети на backup сервер? Тоже пожалуста. Делаем авто авторизацию с ssh ключиками и немого меняем скрипт:

#!/bin/sh
date=`date «+%Y-%m-%d-%H%M%S»`
SRC=/
DST=/mnt/backup-server-hdd/Backups.backupdb/atv

rsync -axz \
—delete \
—link-dest=../Latest \
$SRC backup-user@company.com:$DST/Processing-$date \
&& ssh backup-user@company.com \
«cd $DST \
&& mv Processing-$date $date \
&& rm -f Latest»
&& ln -s $date Latest»

Тестируем, 3ГБ система на appletv сравнилась с последним слепком на сервером за минут пять — сервер удалённый — не в локальной сети, соединение было около 1.5MB/s. Мы добавили «-z» для компресии. Неплохо, но если будет расти можно делать не hourly а с большим диапазоном. Надо указать что rsync по сети похоже не передаст «owner:group» файлов — так как будет пользовать пользователя backup-user@… – можно просто сделать дамп всех атрибутов файлов в текст файл и положить в бэкап.

Читайте также:  Антивирус для айфона 8 плюс

Теперь чего нет у Мак пользователей
1. Гибкая конфигурация с cron.
2. Опция —exclude=PATTERN/—exclude-from=FILE позволяет указать куда более гибкие правила на исключение чем просто указать папки. Например я очень недоволен что time machine бэкапит у меня на маке все *.о файлы — компиляция проекта легко раскидывается на пару гигабайт obj файлов, а сами папки проектов я исключать совсем из бэкапа не хочу.
3. Легко добавить доп логику чтобы делать локи баз данных если нужно
4. Легко сделать также в дополнению к слепку еще соотв слепок только тех файлов что изменились — легко мониторить потом какие файлы были изменены. Так как hardlink-и то места это много не займёт.
5. Добавьте теперь что сами хотите, у вас всё-таки линукс в руках 😉

Update: Пожалуй добавлю список требований к системе резервного копирования который у меня был в голове когда я смотрел на доступные пакеты/системы:
1. Простота использования (rsync: всего одна команда)
2. Доступность (rsync найдёте пожалуй на любом livecd)
3. Зависимости (если у вас слетел диск, вы загрузились с livecd, то теперь надо ставить куда-то пакеты с их зависимостями?)
4. Отсутствие конфиг файлов или их минимум (или теперь сначала искать конфиг руками в бэкапе?)

Источник

Клон Time Machine от Apple в Linux

Я как участник одного довольно крупного линукс сообщества, ладно, чёрт с ней с природной скромностью, один из администраторов самого лучшего сообщества самого лучшего Linux дистрибутива, часто сталкиваюсь с вопросами неофитов, донельзя избалованных прелестями яблочных приложений. И один из самых часто задаваемых вопросов звучит как: «а чем здесь бэкапы делаются? есть в Linux что-то вроде Time Machine в Mac OS X?». Ну что же, друзья, возрадуйтесь ибо свершилось. Умельцы из rastersoft сделали практически 100 <33d8302486bd10b0fde64d2037652320e6f176a736d71849c0427b0d7398501a>по функционалу клон легендарной Time Machine.

Итак используя Cronopete, вы можете один раз настроив резервное копирование навсегда забыть о нём. И один из маловажных плюсов Cronopete, заключается в том что есть готовые пакеты для многих дистрибутивов линукс, включая такие как Manjaro, Arch Linux, Debian, Fedora, и Ubuntu.

Как вы можете видеть из скриншотов, его функционал не богат, но крайне удобен и прост, что делает его дружественным для новичков. С ним любая бабушка сможет разобраться не говоря уже о пользователях Ubuntu или Fedora.

Выбираем пункт «Store backups in an external hard disk» Выбираем диск на который будет производится копирование Выбираем папку которую будем бэкапить

Установка Cronopete

Установка тоже не застанет вас врасплох.
Arch Linux:

В Debian, Ubuntu просто скачиваете и устанавливаете как простой deb пакет:
64bit Debian:

А далее уже устанавливаем скачанный .DEB file:

Fedora:
Так же скачиваем:
64bit:

Итак подводя итог, cronopete замечательный, очень дружественный к пользователям бэкап менеджер, полностью повторяющий функционал приложения Time Machine от Apple.

Источник

Оцените статью