Dropbox for Multi-Computer Settings Syncing
From automated picture backup from my Android devices to sharing Google Sketchup designs with friends, I've used Dropbox for a variety of tasks. It seems to be the go-to system for getting a file (any file) from Person A to Person B. I have several computers hooked up to my personal Dropbox. Some (work ones) with selective sync enabled while others (personal ones) have the full ~20GB synced. Part of that data is used for syncing Windows application settings between my multiple computers.
The Layout
I have a ./Dropbox/cross-sync
folder that contains two subfolders: AppData
and WindowsPowerShell
. The PowerShell folder contains custom modules and my various profile scripts for ISE, powershell.exe, etc (this will be the subject of a future post). Below the AppData folder is a Roaming
folder - containing the various settings folders for applications that I like to keep synchronized across my Windows computers.
.purple
- Used for syncing Pidgin (Instant Messaging) account settings, preferences, etc.
- Known Issues: Account passwords stored in clear text in the
.purple/accounts.xml
file. This is okay-ish for local files where only the file owner can access the contents, but for files synced through Dropbox It's a bad idea. More info on Pidgin/Plain Text Passwords here. - Suggestions: Don't save passwords for Pidgin.
mRemoteNG
- Used for syncing mRemoteNG (tabbed, multi-protocol remote connection manager) connection settings, folders, etc.
- Known Issues: Passwords are stored in the
confCons.xml
file, but are hashed. Unfortunately, those hashed passwords can be recovered at run time rather trivially as shown in this MSItPros post. Additionally, connection info (IPs/hostnames) are visible in that xml file. The former is quite bad, the latter is not great. - Suggestions: Don't store passwords for mRemoteNG/think up a better way of dealing with the
confCons.xml
file.
Notepad++
- Used for syncing Notepadd++ last opened files, plugins, etc.
- Known Issues: Last opened files only works if the paths are the same across the various computers. If I'm referencing a
c:\temp\something.txt
file and it doesn't exist on my home computer, things will bomb out. - Suggestions: ... Don't open files that aren't synced? This may just be a deal with it situation.
Sublime Text 3
- Used for syncing Sublime Text last opened files, packages, user settings, etc.
- Known Issues: Same as Notepad++, additionally although I have a valid license, it seems to fail to recognize it periodically.
- Suggestions: See above for open files. For Licensing, I have my license key stored on Dropbox so it becomes easy to re-register.
Other Problems
Conflicted Copies show up periodically - I'm not 100% sure what's causing them. According to the Dropbox KB, it's when two people edit the same file a the same time - but I'm only working from one computer at a time.
I haven't run into this issue yet, but I would imagine different versions of software could cause issues. Especially if a newer version is installed on one of the syncing computers and the act of installation adds/removes configuration settings that older versions require.
Secret Sauce
The actual synchronization is handled in Windows by junctions. On a new computer that I wish to prepare for this ghetto syncing, I'll install the program (Notepad++, mRemoteNG, etc) and locate the settings folder location (typically %appdata%/whatever
). I make a copy for quick rollback purposes, then delete the folder. Lastly, in an administrator cmd.exe prompt, I'll run the following (this is for pidgin):
C:\WINDOWS\system32>cd %appdata%
C:\Users\pezhore\AppData\Roaming>mklink /J .purple C:\Users\pezhore\Dropbox\cross-sync\AppData\Roaming\.purple
Junction created for .purple <<===>> C:\Users\pezhore\Dropbox\cross-sync\AppData\Roaming\.purple
If I ever need to delete the junction, I can do so in file explorer - it will delete the junction, not the contents of the Dropbox folder.
Future fixes: TrueCrypt
At one point, I'll probably look into syncing a small TrueCrypt volume that contains the syncronized folders. This could help out with the stored passwords and IP/Hostnames. It may also address the conflicted copies issue. The entire Roaming
folder is just about 10MB - an encrypted volume wouldn't need to be large to accommodate it. I would be a little worried about corruption - so backups would be required. In the very least, it would ensure that my data at rest on the Dropbox servers is encrypted.
I may consider looking into auto-mounting the TrueCrypt volume, although that may cause some issues with write conflicts.
Update: With TrueCrypt's development ending, I would need to identify a different encryption method.