Исключить папки по регулярному выражению (?) Из резервного копирования машины времени

2346
smnbbrv

Я использую сервер 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 минут и делает их игнорируемыми.

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

6
Если мой ответ решил вашу проблему, нажмите на галочку под моим ответом, чтобы пометить ваш вопрос как решенный. Hydraxan14 7 лет назад 0

3 ответа на вопрос

8
Gianfranco P.

Вы можете найти и исключить все 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

круто, попробую. Спасибо! smnbbrv 6 лет назад 0
Если вы хотите увидеть исчерпывающий список того, что игнорируется, вы можете запустить `sudo mdfind" com_apple_backup_excludeItem = 'com.apple.backupd' "` (ссылка на https://apple.stackexchange.com/questions/25779/on- OS-X-то, что-файлы-это-исключенного по властвуй-от-времени-машина резервного копирования / 25833 # 25833) CWSpear 5 лет назад 0
4
Hydraxan14

Реддит Пост

Я нашел сообщение 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 
для этого необходимо вручную пометить файлы или папки тегом «No Backup». Я думаю, что это очень ручной Gianfranco P. 6 лет назад 0
2
Damien

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

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

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

Добро пожаловать в Супер пользователя! Можете ли вы немного расширить свой ответ? Просто указание на продукт на самом деле не объясняет, как выполнить решение. Лучше включить некоторые инструкции о том, как использовать продукт для решения проблемы, или хотя бы описать, что делает продукт хорошим решением, обеспечивая ценность за пределами случайного попадания в Google. Хорошее руководство по рекомендации программного обеспечения здесь: http://meta.superuser.com/questions/5329/how-do-i-recommend-software-in-my-answers. Благодарю. fixer1234 6 лет назад 0