Exclui pastas por regex (?) do backup da máquina do tempo

5

Eu uso um servidor Time Machine para meus backups. Enquanto isso, estou desenvolvendo muitos aplicativos web, onde o projeto geralmente consiste em uma pasta com os arquivos de aplicativos que eu quero fazer backup e node_modules pasta (bibliotecas externas) que eu não quero fazer backup. Em outras palavras, a estrutura da pasta, por ex. é:

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

etc.

A quantidade de aplicativos é grande e crescente (atualmente mais de 20), o tamanho da pasta node_modules é geralmente milhares de vezes maior que o restante do projeto: o tamanho é enorme e a quantidade de arquivos também.

Como excluir todas as pastas node_modules de todo o sistema (como .gitignore , mas para a máquina do tempo)? Existe alguma maneira de fazer isso por máscara? Eu simplesmente não quero adicionar a pasta às pastas excluídas manualmente o tempo todo.

Eu também estou bem com um script cron que procura as novas pastas a cada N minutos e faz com que elas sejam ignoradas.

Existem soluções para isso?

    
por smnbbrv 28.12.2016 / 14:39

3 respostas

7

Você pode encontrar e excluir todas as node_modules pastas do caminho atual, por exemplo, no seu diretório home ( ~ ), assim:

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

Parabéns ao @peterdemartini: link

Observe que as pastas excluídas não aparecerão nas Preferências do Sistema do Time Machine ou ao executar este comando:

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

When you use this command (tmutil addexclusion), the item you exclude remains in the Time Machine exclusion list even if you move it, which is not the case when you exclude items from the Time Machine preference pane. If you use the above command with the -p flag, then it will not be sticky and will be the same as an exclusion you add from the Time Machine preference pane.

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

    
por 13.11.2017 / 10:12
4

Reddit Post

Eu encontrei um Reddit Post . É isso que você está procurando?

Under normal circumstances Time Machine runs itself when your backup drive is plugged in, or one hour after the most recent backup, whichever comes last. You can achieve the same thing with a launch daemon of your own. You would create a file at /Library/LaunchDaemons/local.tmupdate.plist and set its contents to something like this.

You would then set up the script /usr/local/bin/tmupdate.sh to clear the old exclusions list, recreate it with the new ones, then initiate the backup itself:

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

Revivendo um post antigo, mas enquanto procurávamos a mesma coisa, acabei experimentando essa ferramenta chamada Asimov , e funcionou muito bem para mim.

Asimov irá varrer diretórios procurando node_modules (nodeJs) ou vendor (compositor php), e excluir automaticamente do próximo backup TimeCapsule. Ele também adicionará um cron job para atualizar essas exclusões.

Espero que isso ajude alguém.

    
por 06.03.2018 / 11:46