Il s'avère que mettre un fichier appelé .nosync
dans les dossiers que vous souhaitez ignorer dans icloud ne fonctionne plus (comme dans la réponse acceptée), donc changer le nom du dossier pour qu'il se termine par .nosync, et ajouter un lien symbolique, est la meilleure option suivante.
Voici une fonction de l'interpréteur de commandes (à placer dans .zshrc ou .bashrc) appelée "nosync" qui parcourt les documents et le bureau, en ajoutant les éléments suivants .nosync
à la fin de vos dossiers .git et de vos dossiers node_modules, et en créant un lien symbolique vers le nouveau dossier caché depuis l'emplacement d'origine. Ce script gère correctement les dossiers imbriqués (uniquement les liens symboliques et ignore les node_modules de niveau supérieur). Ce script ajoute également l'attribut qui indique à Dropbox d'ignorer un fichier (pour ceux d'entre vous qui utilisent également la synchronisation Dropbox). Pour l'exécuter, vous avez besoin de brew install findutils
parce que la commande standard de recherche de Mac ne supporte pas les trucs sophistiqués.
nosync() {
# GNU find (brew install findutils), because it supports xtype, find directories, following symlinks, where the end file (not following its symlink (via -xtype)) is not a symlink
# and the path is not under a nosync dir, and the path is pruned (no nested node_modules)
# move the folder to a dot file which is dropbox and icloud ignored, symlink the old folder, and suppress cyclical symlink warnings
gfind -L ~/Documents -name node_modules -prune -not -path '*.nosync*' -type d -not -xtype l -exec sh -c 'mv "$0" "$(dirname "$0")/.$(basename "$0").nosync" && ln -s "$(dirname "$0")/.$(basename "$0").nosync" "$0" && xattr -w com.dropbox.ignored 1 "$(dirname "$0")/.$(basename "$0").nosync" && echo "$0"' {} \; 2> >(grep -v "File system loop detected")
gfind -L ~/Desktop -name node_modules -prune -not -path '*.nosync*' -type d -not -xtype l -exec sh -c 'mv "$0" "$(dirname "$0")/.$(basename "$0").nosync" && ln -s "$(dirname "$0")/.$(basename "$0").nosync" "$0" && xattr -w com.dropbox.ignored 1 "$(dirname "$0")/.$(basename "$0").nosync" && echo "$0"' {} \; 2> >(grep -v "File system loop detected")
# adds a dot for node_modules, but not for .git, which is already hidden
gfind -L ~/Documents -name .git -prune -not -path '*.nosync*' -type d -not -xtype l -exec sh -c 'mv "$0" "$0".nosync && ln -s "$0".nosync "$0" && xattr -w com.dropbox.ignored 1 "$0".nosync && echo "$0"' {} \; 2> >(grep -v "File system loop detected")
gfind -L ~/Desktop -name .git -prune -not -path '*.nosync*' -type d -not -xtype l -exec sh -c 'mv "$0" "$0".nosync && ln -s "$0".nosync "$0" && xattr -w com.dropbox.ignored 1 "$0".nosync && echo "$0"' {} \; 2> >(grep -v "File system loop detected")
}
Vous pourriez vouloir configurer une tâche cron pour exécuter ce script de temps en temps.