         start      : undefined
         stop       : undefined
         repeat     : false       # if true, will loop around, repeatedly backing up, over and over again; opts.cb (if defined) will get called every time it completes a backup cycle.
+        projects   : undefined   # if given, only backup *this* list of projects (list of project id's)
         cb         : undefined
     dbg = (m) -> winston.debug("backup_all_projects: #{m}")
     errors = {}
-    projects = undefined
+    projects = opts.projects
     async.series([
         (cb) ->
+            if projects?
+                cb(); return
             dbg("querying database...")
             database.select
                 table   : 'projects'

                    project_id : project_id
                    cb         : (err) ->
                        if err
                            errors[project_id] = err
                        cb()
            async.mapLimit(projects, opts.limit, f, cb)
    ], (err) ->
        if err

                            if output?.stderr? and output.stderr.indexOf('does not exist') != -1
                                err = undefined
                        cb(err)
                ###
        (cb) ->
            dbg("throw in a umount, just in case")
            create_user
