I'm using Unison to synchronize my home across several computers, and I've addressed everything but this. The Dropbox configuration is partially skipped, and as a result Dropbox thinks there is no configuration and goes through the configuration wizard again.Here's the output from Unison related to dropbox:Reconciling changes                                                              <-?-- dir        .dropbox           <---- dir        .dropbox-dist           <---- dir        .dropbox-dist-new  [BGN] Copying .dropbox from /home/.nfs/jorge.suarez/linux-home to /home/remoto/jorge.suarez[END] Copying .dropbox[BGN] Copying .dropbox-dist from /home/.nfs/jorge.suarez/linux-home to /home/remoto/jorge.suarez[END] Copying .dropbox-dist[BGN] Copying .dropbox-dist-new from /home/.nfs/jorge.suarez/linux-home to /home/remoto/jorge.suarez[END] Copying .dropbox-dist-new  partially transferred: .dropboxHere's the original contents of the directory:$ ls -lahtotal 22Mdrwx------  3 jorge.suarez users 3,9K 2013-01-25 21:39 .drwxr-xr-x 43 jorge.suarez users 3,9K 2013-01-25 21:40 ..srw-------  1 jorge.suarez users    0 2013-01-25 21:39 command_socket-rw-------  1 jorge.suarez users 3,0K 2013-01-25 21:39 config.db-rw-------  1 jorge.suarez users  20K 2013-01-25 21:39 config.dbx-rw-------  1 jorge.suarez users  66K 2013-01-25 21:39 deleted.dbx-rw-------  1 jorge.suarez users    4 2013-01-25 21:39 dropbox.pid-rw-------  1 jorge.suarez users 2,0M 2013-01-25 21:39 filecache.dbx-rw-------  1 jorge.suarez users   89 2013-01-25 21:39 host.db-rw-------  1 jorge.suarez users  221 2013-01-25 21:39 host.dbx-rw-------  1 jorge.suarez users   81 2013-01-25 21:39 hostkeyssrw-------  1 jorge.suarez users    0 2013-01-25 21:39 iface_socketdrwx------  2 jorge.suarez users 3,9K 2013-01-25 21:39 l-rw-------  1 jorge.suarez users  13K 2013-01-25 21:39 photo.dbx-rw-------  1 jorge.suarez users  20M 2013-01-25 21:39 sigstore.dbx-rw-------  1 jorge.suarez users  232 2013-01-25 21:39 unlink.dbAnd the synchronized one, just before Dropbox gets a chance to be launched:$ ls -lahtotal 22Mdrwx------  3 jorge.suarez users 4,0K Xan 25 22:09 .drwx------ 43 jorge.suarez users 4,0K Xan 25 22:10 ..-rw-------  1 jorge.suarez users 3,0K Xan 25 22:09 config.db-rw-------  1 jorge.suarez users  20K Xan 25 22:09 config.dbx-rw-------  1 jorge.suarez users  66K Xan 25 22:09 deleted.dbx-rw-------  1 jorge.suarez users    4 Xan 25 22:09 dropbox.pid-rw-------  1 jorge.suarez users 2,0M Xan 25 22:09 filecache.dbx-rw-------  1 jorge.suarez users   89 Xan 25 22:09 host.db-rw-------  1 jorge.suarez users  221 Xan 25 22:09 host.dbx-rw-------  1 jorge.suarez users   81 Xan 25 22:09 hostkeysdrwx------  2 jorge.suarez users 4,0K Xan 25 22:09 l-rw-------  1 jorge.suarez users  13K Xan 25 22:09 photo.dbx-rw-------  1 jorge.suarez users  20M Xan 25 22:09 sigstore.dbx-rw-------  1 jorge.suarez users  232 Xan 25 22:09 unlink.dbIt seems iface_socket and command_socket are skipped because they are socket files. Is there anything I can do about this?As a workaround, I could just parse the Unison output and create the socket files by hand. That should fix this particular issue, but the problem would remain for other socket files since the Unison output doesn't contain the name of the skipped files.
Unison can't synchronize Dropbox configuration (socket files)
linux;ubuntu;rsync;dropbox;unison
As of Unison 2.40 (the latest version as I write), Unison doesn't support any file that isn't a regular file, a directory, or a symbolic link. Prior versions aborted the transfer upon encountering special files; since 2.40 these files are ignored. In 2.40.65, you don't get to see the name of ignored files in the first synchronization but it is displayed in subsequent synchronizations. So you could run Unison manually once, then parse its output to detect special files.The other options are to patch Unison, or to look for special files manually and copy them.One method to synchronize these files would be to keep a repository of them. For example, make a parallel hierarchy that encodes the special files with normal files, let Unison synchronize that, and decode the parallel hierarchy back after synchronization. Before running unison, on each side:mkdir -p .pipes .socketsfind . -type p -exec sh -c '    mkdir -p .pipes/${0%/*};    touch -r $0 .pipes/$0; chmod -r $0 .pipes/$0  ' {} \;find . -type s -exec sh -c '    mkdir -p .sockets/${0%/*};    touch -r $0 .sockets/$0; chmod -r $0 .sockets/$0' {} \;After running unison:(cd .pipes && find -type f -exec sh -c '    [ -p ../$0 ] && exit;    mkfifo ../$0;    touch -r $0 ../$0; chmod -r $0 ../$0  ' {} \;)find -type p -exec '[ -e .pipes/$0 ] || rm $0' {} \;(cd .sockets && find -type f -exec sh -c '    [ -S ../$0 ] && exit;    python -c import os, sys; os.mknod(sys.argv[1], 0140000) ../$0;    touch -r $0 ../$0; chmod -r $0 ../$0' {} \;)find -type s -exec '[ -e .sockets/$0 ] || rm $0' {} \;(Warning: untested code. Assumes GNU tools (which includes any non-embedded Linux).)I think this is more complex than warranted. There are very few applications that rely on a named pipe or socket existing: most create them as needed. Dropbox is the first case I've ever heard of. So I think I'd go for an ad hoc approach: skip the sockets when synchronizing, and create them for Dropbox as part of your new account creation procedure (together with the Unison profile creation and whatever else you do).