docs: function sftpPut(inFilename, cb) {
      var fromFile, toFile, from, to;
  
      fromFile = localRoot + localSep + inFilename;
      toFile = remoteRoot + remoteSep + inFilename.split(localSep).join(remoteSep);
  
      if(localSep != remoteSep) {
        toFile = toFile.replace(new RegExp(localSep == '\\' ? '\\\\' : '\\/', 'g'), remoteSep);
      }
  
      grunt.verbose.write(fromFile + ' to ' + toFile);
  
      var f_size = fs.statSync(fromFile).size;
  
      var upload = function(fromFile, toFile, cb) {
        sftpConn.fastPut( fromFile, toFile, function(err){
          if (err){
            log.write((' Error uploading file: ' + err.message).red + '\n');
            cb(err);
          } else {
            grunt.verbose.write(' done'.green + '\n' );
            if( with_progress ) progressLogger.tick();
            transferred += parseInt(f_size/1024);
            cb(null);
          }
        });
      };
  
      if (cacheEnabled) {
        fs.stat(fromFile, function(err, fromFileData){
          if (cache[fromFile] && +new Date(cache[fromFile]) >= +new Date(fromFileData.mtime)) {
            cb(null);
          } else {
            cache[fromFile] = fromFileData.mtime;
            upload(fromFile, toFile, cb);
          }
        } );
      } else {
        upload(fromFile, toFile, cb);
      }
  
    }