code: function copy(src, dst, options) {
    options = _.opts(options, {exclude: [], owner: {}});
    const files = _matchingFilesArray(src, options);
    _.each(files, function(f) {
      _copy(f, dst, options);
    });
  }
docs: /* eslint-enable no-use-before-define 
  Copy file or directory
  @function $file~copy
  @param {string|string[]} source - File or array of files to copy. It also supports wildcards
  @param {string} destination
  @param {Object} [options]
  @param {Object} [options.owner={}] - Ownership definition. Object containing the username and group to apply
  to the copied files
  @param {string|string[]} [options.exclude=[]] - List of patterns used to exclude files when copying
  @example
  // Copy a file
  $file.copy('/foo/bar/sample', '/foo/bar/sample2');
  @example
  // Copy all files in the 'extra' directory excecept the language files
  $file.copy('conf/extra/*', 'conf', {owner: {username: 'daemon'}, exclude: 'conf/extra/*language*'})