У меня есть рабочий макбук и я часто путешествую. Я боюсь потерять данные на нем, поэтому я делаю бекапы через родную Time Machine на удаленный сервер. Для этого я поднял в офисе сервер SMB, который всегда доступен через VPN.  Проблема: если включить автоматический бекап в Time Machine, система будет постоянно бекапится даже через тонкий мобильный интернет в самолете, мешая работать, исчерпав весь канал.  Решение: я написал скрипт Time Machine Traveler, который проверяет скорость доступа к SMB  шаре и запускает бекап только если качество соединения высокое.    Проверяет доступность SMB сервера через VPN Если сервер доступен, запускает тест скорости через iperf3 Если скорость хорошая, запускает бекап Чтобы развернуть такой же сетап, вам потребуется поднять Samba сервер и настроить к нему удаленный доступ через VPN. Вы можете сделать это любым удобным способом. Я расскажу про свой способ. Мы на работе используем модный ZeroTier. Это не совсем VPN, так как в нем нет центрального сервера, а все соединения происходят напрямую, через P2P. Это позволяет получить максимальную скорость между клиентом и SMB сервером.  В обычной схеме с VPN сервером вы всегда ограничены качеством канала между вами и сервером. И даже если офис находится в соседнем здании, вы все равно будете пропускать трафик через VPN сервер, внося задержки. В ZeroTier я выжимаю 100 Mbit/s до офиса из дома с минимальными задержками. При этом мне доступны все хосты внутри VPN сети, и чем ближе я  физически к целевому хосту, тем лучше скорсть. Такое невозможно получить с центральным VPN сервером. Я обожаю ZeroTier за его простоту в настройке. Я пользуюсь и OpenVPN и IPSec Ikev2 и все это ужасно. Сейчас добавление нового клиента в VPN сеть у нас на работе выглядит так: sudo zerotier-cli join <network id> Дальше администратор апрувит добавление нового клиента в веб-морде и все. Там же в веб-интерфейсе можно легко отключить клиента. Кайф! Для бекапа в Time Machine вам потребуется развернуть SMB сервер на дисковом хранилище. Это может быть NAS или голая Samba. Я использую обычную Samba настроенную по этому мануалу, чтобы включить расширения протокола для macOS.  С недавнего времени Apple забросили поддержку своего протокола AFP (Apple Filing Protocol), поэтому все мануалы по настройке сервера для Time Machine, где используется AFP устаревшие, не используйте их. Теперь достаточно обычного SMB. Чтобы измерять скорость до SMB хранилища, я развернул на том же сервере iperf3, который всегда слушает порт и ждет клиентов для замеров скорости сети.   apt install iperf3 И добавил его как сервис: В нашем случае клиенты это макбуки путешественников. На них нужно настроить Time Machine на удаленный сервер как обычно. При настройке важно подключаться к SMB серверу по тому адресу, который будет доступен через VPN. ВАЖНО: при подключении к SMB хранилищу нужно поставить галочку "Сохранить пароль в ключнице, иначе мой скрипт не сможет сам подмонтировать диск в фоне. Если у вас правильно настроена Samba, удаленный диск появится в списке доступных для бекапа в Time Machine. Активируйте его и выполните первый самый долгий бекап. Размер бекапа будет равен объему занятого места на диске. Когда первичный бекап выполнен, нужно убрать галочку "Автоматический Бекап". ВАЖНО: если дисковое хранилище общее, выбирайте опцию "шифровать бекап" в time machine, иначе все ваши файлы будут лежать на сервере в открытом виде. Мой скрипт это плагин для утилиты xbar. Эта утилита запускает шелл скрипты в фоне и красиво форматирует их вывод в системном трее.  Вот мой плагин Time_Machine_Traveler.py  (Это Pull Request в библиотеку плагинов xbar)  Он еще сырой и я не буду советовать всем его устанавливать. Вам придется самому разобраться как добавить его в xbar. В данный момент я приглашаю только разработчиков протестировать и доработать плагин.  У скрипта есть настройки, для работы вам нужно их заполнить SMB_SHARE_ADDRESS —  адрес SMB сервера, IP или домен, например 10.30.22.1 WORKGROUP_NAME — имя рабочей группы на SMB сервере. В моем случае  стандартное WORKGROUP SMB_MOUNT_PATH — полный путь по которому будет доступно SMB хранилище в системе. В моем случае это /Volumes/pavel Его можно посмотреть, когда SMB хранилище смонтировано с помощью утилиты df SMB_USER — имя пользователя с которым подключаться к SMB SMB_SHARE_PATH — имя SMB папки на сервере. Оно показано, когда вы подключаетесь к SMB серверу. В моем случае это просто pavel SPEED_TEST_SERVER — адрес сервера на котором установлен iperf3. В моем случае это тот же адрес, что и SMB хранилище SPEED_TEST_DURATION — время, которое будет выполняться тест скорости. По умолчанию это 10 секунд, что для меня слишком долго, так как в этот момент канал нагружается полностью. Я поставил 3 секунды SPEED_TEST_TIMEOUT — таймаут подключения к серверу iperf3 в миллисекундах. Это те же задержки, которые мы видим в ping. Если поставить значение меньше 100мс, это автоматически отрежет бекап через мобильный интернет. MIN_SPEED — минимальная скорость до сервера в Mbit/s. Я ставлю 60 мегабит. MAX_LOAD_AVERAGE — я ненавижу, когда бекап включается в момент, когда я кодирую видео на ноутубуке. Поэтому скрипт проверяет насколько нагружена система и если LA больше этого значения, то не запускает бекап. Я ставлю 5 Это полезный инструмент для удаленных сотрудников и тех кто путешествует. На текущий момент скрипт находится в alpha версии и я прошу вас принять участие в тестировании и доработке скрипта, потому что мне уже лень.  Скрипт не готов до конца, нужно еще: Убрать зависимость от стороннего python3 из brew. В идеале хочется использовать стандартный системный питон Убрать зависимость от osascript Сократить настройки: брать настройки адреса SMB шары и всех путей из вывода tmutil destinationinfo Показывать прогресс бекапа через tmutil status. Вот референс Брать дату последнего успешного бекапа из tmutil status и на основании этого сделать возможность настройки интервалов бекапов: если последний успешный бекап старше N дней, запускаем бекап. Гик, задрот и богомол. Делаю Flipper Zero