         opts = defaults opts,
             path   : required
             cb     : undefined
-
-
+        async.series([
+            (cb) =>
+                @sync_get
+                    path   : opts.path
+                    delete : false
+                    cb     : cb
+            (cb) =>
+                @sync_put
+                    path   : opts.path
+                    delete : false
+                    cb     : cb
+        ], (err) => opts.cb?(err))
 
 
 quote_if_not_uuid = (s) ->

    sync_get: (opts) =>
        opts = defaults opts,
            path   : required
            delete : false
            cb     : undefined
        dbg = (m) => @dbg('sync_get', opts.path, m)

    # First copy any files from the database to path, and any from path (not in db) back to the database,
    # so that the same files (the union) are in both.

    # Files with the same name and size are considered equal (for our application
    # this is fine).

    sync_diff: (opts) =>
        opts = defaults opts,
            path : required,
            cb   : required     # cb(err, {local_only:local_only_files, db_only:db_only_files})

        dbg = (m) => @dbg('sync_diff', opts.path, m)
        db_files    = {}  # map filename:size with keys the db files
        local_files = {}  # map filename:size with keys the local files
        async.series([
            (cb) =>
                dbg("files in database")
                @ls
                    cb : (err, x) =>
                        if err
