How to sync OS X desktop to Dropbox?
Using Folder Actions
This will – whenever you add a new file – synchronize your Desktop with a Dropbox folder of your choice. First, create the Dropbox folder where you want your desktop files to stay, e.g. ~/Dropbox/Desktop
.
Then, open up Automator.app and create a new Folder Action. On the top, select your real Desktop.
To the Automator action, add a Run Shell Script action from the left pane. Paste the following.
rsync -rta --delete ~/Desktop/ ~/Dropbox/Desktop/
Save the action.
Now, this will run by default, and whenever an item is added to your Desktop, it will be mirrored with the Dropbox. If you delete an item from your Desktop, there will be no changes, so you have to add something (e.g. create a new folder and delete it right away) to force a sync.
If you ever want to disable it, right-click your Desktop icon from Finder, and select Services » Folder Action Setup. Here, uncheck your Desktop.
Copying with cron
A very static, non-preferred way involves setting up cron
. If you just want to copy the items, you can open your Terminal, and enter:
mkdir -p ~/Dropbox/Desktop
crontab -e
Then, paste the following, and save:
0 12 * * * rsync -rt --delete ~/Desktop/ ~/Dropbox/Desktop/
This will make a backup every day, at 12:00. You can change the 12
to *
to do this every hour. To disable it again, enter crontab -e
and delete this line, then save.
I prefer the symlink method, but when setting up additional Mac's to share the sync, it can get tricky.
First, I have a folder in Dropbox dedicated to "osx sync" ... e.g.: sync_osx
Before I setup the symlink on the new Mac, I temporary "move" the Desktop folder out of the
sync_osx
(but still inside the main DropBox folder).-
I then open Terminal and type:
cd ~/Dropbox/sync_osx
ln -s ~/Desktop/ Desktop
Finally, I move the files back into the newly created Desktop folder in
~/Dropbox/sync_osx/Desktop
.
By moving the files within the Dropbox folder, Dropbox quickly syncs and file change history remains intact.
Since you want the content from your Desktop in Dropbox, I recommend first moving the content on your Desktop to Dropbox. You can put your Desktop anywhere in Dropbox, but I recommend directly as Dropbox/Desktop. I'll assume for now that you have Dropbox installed as ~/Dropbox and your Desktop as ~/Desktop. So to move the files:
# ensure the directory exists on Dropbox
mkdir -p ~/Dropbox/Desktop
# move local files to the Dropbox-hosted Desktop
mv ~/Desktop/* ~/Dropbox
Next, you want to create a symlink so that ~/Desktop redirects to ~/Dropbox/Desktop. However, you can't do that while there's an existing Folder at ~/Desktop, so you'll want to remove it.
Before you do that, though, you'll probably want to retain the Folder icon for the Desktop. The only way I know to do that is to copy it to the clipboard using Finder. Open Finder and navigate to your home directory, select the Desktop, and then Get Info on it (⌘I). Select the folder icon in the upper left and copy it to the clipboard (⌘C). Next, restore the icon for the Desktop folder by navigating to your Dropbox/Desktop folder in Finder, invoking Get Info on it, selecting the icon in the upper right, and pasting the icon that you copied earlier (⌘V).
Now you're ready to remove the old Desktop folder.
# remove ~/Desktop
sudo rm -Rf ~/Desktop
sudo
is required to remove that folder because it is system-managed.
Then, create the symbolic link so that the Desktop is available from both locations:
ln -s Dropbox/Desktop ~/Desktop
The above technique should work on the first machine, but also subsequent machines, even if the new machines already have content on the Desktop (which gets merged with the cloud-hosted copy). It saves storage and minimizes synchronicity issues by only keeping one copy of the content on the disk.
Finally, I've observed that this technique causes the Desktop to be lost from the Sidebar / Favorites. Restore the shortcut in the Favorites by navigating in Finder to the Dropbox and dragging the Desktop to the Sidebar. Note that the icon for the Desktop in the Sidebar will be replaced by a generic Folder icon. I do not yet know a way to restore that icon (and it may not be possible).
I welcome any suggestions on improving this technique - specifically how to invoke all the actions through the command line or retaining the icon in the Sidebar.
This technique seems to work for other special folders too (Downloads, Documents, etc).