macOS Sierra offers the possibility to sync the Documents and Desktop folders to iCloud Drive.
(You can enable this in System Preferences > iCloud > iCloud Drive > Options… > Desktop & Documents Folders)
Basically this can be a nice thing, but sometimes you just want to exclude certain files/folders.
Unlike as with Time Machine or CrashPlan backups, where you can exclude items by setting an extended attribute[1], there is — to my knowledge — no such attribute that would allow you to exclude items from the iCloud sync.
The only way — afaik — to exclude items from iCloud sync is:
- Put the files in a folder named
tmp
- Append the suffix
.tmp
or.nosync
to a file or folder
Well, this is better than nothing, but, in case of a file, it “kills” the real extension of the file, and hence causes problems.
Today I found out, by accident, that you can use the .nosync
suffix also as infix, and it still works:.
So, instead of…
myhugetemporarydoc.pdf.nosync
…you can also name it…
myhugetemporarydoc.nosync.pdf
This is way better, because the .pdf
extension remains intact this way and the file is recognized as pdf
by your programs and the Finder.
(BTW, this does not work with .tmp
.)
So, here’s a little macro that allows you to quickly mark a file/folder as excluded from iCloud sync:
What the macro does…
…is very simple:
- If the Finder-selected item has an extension, it will insert the
.nosync
as infix between basename and extension - If the item has no extension (e.g. like most folders), then the
.nosync
will be appended as suffix
Works also with multiple selections.
Caveats:
- If a file has two extensions (typically
.tar.xz
,.tar.gz
, etc.) the.nosync
will be placed in-between
One could change that behavior, so that the .nosync
gets inserted before the first dot, but this would conflict with filenames that have dots in the basename.
I often have dots in the basename, e.g. mydoc.1.1.7-de.pdf
, so I prefer the current solution.
Notes
- Since I found that possibility just a couple of hours ago, the macro is not well tested. So please use it carefully and report back any bugs.
- If you know of any better way to exclude files from iCloud sync (e.g. via extended attribute), please let me know.
Exclude from iCloud Sync.kmmacros (3.8 KB)
[1] com.apple.metadata:com_apple_backup_excludeItem
Edit: I have just posted another macro for that.
####PS:
This is my original bash version of the macro. You can use it for example as LaunchBar action or as standalone script:
#!/bin/sh
outSuffix="nosync"
for ARG in "$@"; do
pathTail="${ARG##*/}"
ext="$([[ "$pathTail" = *.* ]] && echo ".${pathTail##*.}" || echo '')"
pathHead="${ARG%/*}"
pathRoot="${pathTail%.*}"
outTail="$pathRoot.$outSuffix$ext"
outPath="$pathHead/$outTail"
mv "$ARG" "$outPath"
done