6

Я использую сервер Time Machine для своих резервных копий. В то же время я занимаюсь разработкой большого количества веб-приложений, в которых проект обычно состоит из папки с файлами приложений, которые я хочу сделать резервную копию, и папки node_modules (внешние библиотеки), которую я не хочу делать резервной копии. Другими словами, структура папок, например:

projects
-- app1
---- src
---- node_modules -- I want to ignore only this folder
---- package.json
-- app2
---- whatever-else
---- node_modules -- I want to ignore only this folder
---- package.json
---- elephant.jpg

и т.п.

Количество приложений велико и растет (в настоящее время их более 20), размер папки node_modules обычно в тысячи раз больше, чем остальная часть проекта: размер огромен, а количество файлов тоже.

Как исключить все папки node_modules во всей системе (например, .gitignore но для машины времени)? Есть ли способ сделать это по маске? Я просто не хочу постоянно добавлять папку в исключенные папки вручную.

Я также в порядке со скриптом cron, который ищет новые папки каждые N минут и делает их игнорируемыми.

Есть ли решения для этого?

3 ответа3

9

Вы можете найти и исключить все папки node_modules из текущего пути, например, в вашем домашнем каталоге (~), например так:

$ find `pwd` -maxdepth 3 -type d -name 'node_modules' | xargs -n 1 tmutil addexclusion

Слава @peterdemartini: https://gist.github.com/peterdemartini/4c918635208943e7a042ff5ffa789fc1

Обратите внимание, что исключенные папки не будут отображаться в системных настройках Time Machine или при выполнении этой команды:

$ defaults read /Library/Preferences/com.apple.TimeMachine.plist SkipPaths

Когда вы используете эту команду (tmutil addexclusion), исключаемый вами элемент остается в списке исключений Time Machine, даже если вы его перемещаете, а это не тот случай, когда вы исключаете элементы из панели предпочтений Time Machine. Если вы используете указанную выше команду с флагом -p, она не будет фиксированной и будет такой же, как и исключение, добавляемое вами из панели настроек Time Machine.

https://www.macworld.com/article/2033804/control-time-machine-from-the-command-line.html

4

Реддит Пост

Я нашел сообщение Reddit. Это то, что вы ищете?

В обычных условиях Time Machine запускается самостоятельно, когда ваш резервный диск подключен, или через час после последнего резервного копирования, в зависимости от того, что наступит последним. Вы можете добиться того же самого с помощью собственного демона запуска. Вы должны создать файл в /Library/LaunchDaemons/local.tmupdate.plist и установить его содержимое примерно так.

Затем вы должны настроить скрипт /usr/local/bin/tmupdate.sh чтобы очистить старый список исключений, воссоздать его с новыми, а затем запустить саму резервную копию:

#!/bin/sh
defaults delete /Library/Preferences/com.apple.TimeMachine.plist SkipPaths
mdfind 'kMDItemUserTags == "No Backup"' -0 | xargs -0 tmutil addexclusion
tmutil startbackup --auto
2

Оживил старый пост, но, ища то же самое, я в итоге попробовал этот инструмент под названием Азимов, и он отлично работал для меня.

Азимов будет сканировать каталоги в поисках node_modules (nodeJs) или vendor (php composer) и автоматически исключать их из следующей резервной копии TimeCapsule. Также будет добавлено задание cron для обновления этих исключений.

Надеюсь, это кому-нибудь поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .