Source: apc-abstract/lib/file/copy_file.js

/**
 * Copy a file.
 * @function lib.file.copyFile
 * @param {string} src - File path to copy from.
 * @param {string} dest - File path to copy to.
 * @author Taka Okunishi
 *
 */
var fs = require('fs');
exports = module.exports = function (src, dest, callback) {
    var readStream = fs.createReadStream(src),
        writeStream = fs.createWriteStream(dest);

    var errorHandler = exports._errorHandler(callback);
    readStream.on('error', errorHandler);
    writeStream.on('error', errorHandler);
    writeStream.on('close', function () {
        callback(null);
    });
    readStream.pipe(writeStream);
};

exports._errorHandler = function (callback) {
    return function (err) {
        callback && callback(err);
        callback = null;
    };
};