Question Exclure les dossiers par regex (?) À partir de la sauvegarde de Time Machine


J'utilise un serveur Time Machine pour mes sauvegardes. Pendant ce temps, je développe de nombreuses applications Web où le projet consiste généralement en un dossier contenant les fichiers d’application que je veux sauvegarder et node_modules dossier (bibliothèques externes) Je ne veux pas sauvegarder. En d'autres termes, la structure de dossier, par ex. est:

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.

La quantité d’applications est grande et croissante (actuellement plus de 20), la taille de node_modules dossier est généralement des milliers de fois plus grand que le reste du projet: la taille est énorme et la quantité de fichiers aussi.

Comment exclure tous les node_modules dossiers dans tout le système (comme .gitignore mais pour la machine à remonter le temps)? Y a-t-il un moyen de le faire par masque? Je ne veux tout simplement pas ajouter manuellement le dossier aux dossiers exclus.

Je suis également d'accord avec un script cron qui recherche les nouveaux dossiers toutes les N minutes et les rend ignorés.

Y a-t-il des solutions pour cela?


4
2017-12-28 13:39


origine


Si ma réponse a résolu votre problème, veuillez cliquer sur la coche située sous ma réponse pour que votre question soit résolue. - Hydraxan14


Réponses:


Vous pouvez trouver et exclure tout node_modules dossiers du chemin actuel, par ex. dans votre répertoire personnel (~), comme ça:

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

Bravo à @peterdemartini: https://gist.github.com/peterdemartini/4c918635208943e7a042ff5ffa789fc1

Notez que les dossiers exclus n'apparaîtront pas dans les préférences système de Time Machine ou lors de l'exécution de cette commande:

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

Lorsque vous utilisez cette commande (tmutil addexclusion), l'élément exclu reste dans la liste d'exclusion Time Machine, même si vous le déplacez, ce qui n'est pas le cas lorsque vous excluez des éléments du volet de préférences Time Machine. Si vous utilisez la commande ci-dessus avec l'indicateur -p, elle ne sera pas collante et sera identique à une exclusion que vous ajoutez à partir du panneau de préférences Time Machine.

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


6
2017-11-13 09:12



cool, je vais essayer. Merci! - smnbbrv
Si vous voulez voir une liste exhaustive de ce qui est ignoré, vous pouvez exécuter sudo mdfind "com_apple_backup_excludeItem = 'com.apple.backupd'"(crédit à apple.stackexchange.com/questions/25779/...) - CWSpear


Reddit Post

j'ai trouvé un Reddit Post. Est-ce ce que vous recherchez?

Dans des circonstances normales, Time Machine s'exécute lui-même lorsque votre sauvegarde   le lecteur est branché, ou une heure après la dernière sauvegarde,   selon la dernière éventualité. Vous pouvez réaliser la même chose avec un lancement   démon de votre choix. Vous créez un fichier à    /Library/LaunchDaemons/local.tmupdate.plist et définir son contenu à   quelque chose comme ça.

Vous devez ensuite configurer le script /usr/local/bin/tmupdate.sh nettoyer   l’ancienne liste des exclusions, recréez-la avec les nouvelles, puis lancez   la sauvegarde elle-même:

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

4
2017-12-28 23:24



cela nécessite de baliser manuellement les fichiers ou les dossiers avec une balise nommée No Backup. Je pense que c'est très manuel - Gianfranco P.


Faire revivre un ancien message, mais en cherchant la même chose, j'ai fini par essayer outil appelé Asimov, et ça a bien marché pour moi.

Asimov va scanner les répertoires à la recherche de node_modules (nodeJs) ou vendor (compositeur PHP), et exclure alors automatiquement de la prochaine sauvegarde TimeCapsule. Il ajoutera également une tâche cron pour mettre à jour ces exclusions.

J'espère que cela aide quelqu'un.


1
2018-03-06 10:46



Bienvenue sur Super User! Pouvez-vous développer votre réponse un peu? Le simple fait de pointer vers un produit n'explique pas vraiment comment réaliser la solution. Il est préférable d'inclure des instructions sur la façon d'utiliser le produit pour résoudre le problème, ou du moins, de décrire ce qui fait du produit une bonne solution, en fournissant de la valeur au-delà d'un accès aléatoire à Google. De bons conseils sur la recommandation de logiciels ici: meta.superuser.com/questions/5329/. Merci. - fixer1234