Tag: rsync

用回车(\ r)处理STDOUTstream的Child_process

我正在编写一个简单的(ish)应用程序,它允许工作的内部系统从远程服务器向另一个使用REST调用激发的远程服务器请求一个复制过程(使用rsync)。 我对express框架已经很熟悉了,刚开始尝试使用child_process库,偶然发现了一个小问题。 我成功地启动rsync进程使用节点的childProcess.spawn() ,我的问题是,rsync输出其行进缓冲回车符(\ r),而不是一个换行符(\ n)。 因此,STDOUT事件process.stdout.on('data', {})仅在调用传输之前被调用一次,然后在复制完成之后,由于STDOUT数据不会被清空作为进度更新返回,只有一个换行符,当工作完成。 在最新版本的rsync(3.1.0)中有一个开关将输出缓冲区结尾改为\ n而不是\ r,但不幸的是,我工作的公司将不会长期采用这个版本。 我正在产卵,并以通常的方式读取child_process …. var doCopy = function (onFinish) { var process = childProcess.spawn('ssh', [ source.user + "@" + source.host, "rsync", "-avz", "–progress", source.path + source.file, "-e ssh", dest.user + "@" + dest.host + ":" + dest.path ]); process.on('error', function (error) { console.log("ERR: " + error.code); […]

shell命令给child_process.spawn(command,,)node.js

基本上,我只是想在节点应用程序上运行rsync命令。 原始的rsync代码如下所示: rsync -r -t -p -o -g -v –progress –delete -l -H /Users/ken/Library/Application Support/Sublime Text 3/Packages /Users/ken/Google Drive/__config-GD/ST3 首先,我试了一下 child_process.exec(command, [options], callback) 但是,由于rsync输出很长,超出了缓冲区。 所以,我试了 child_process.spawn(command, [args], [options]) 相反,和stream.pipe出来。 var spawn = require('child_process') .spawn; var ps = spawn(command1, args1) .stdout .pipe(process.stdout); 虽然这个按预期工作,但是将每个原始的rsync命令拆分成spawn格式太难了。 (我从gRsync工具复制并粘贴命令) 有没有聪明的方法来做到这一点? 谢谢。

在英特尔伽利略linux的rsync与node.js

我一直在努力寻找一个node.js脚本来处理intel Galileo板上提供的linux发行版。 我正在使用SD卡上提供的全尺寸发行版,并且使用了: 'npm install rsync' 安装node.js rsync。 我只是想根据在npm站点给出的例子来testingfunction。 这是我正在使用的: -#!/usr/bin/node var Rsync = require('rsync'); // Build the command var rsync = new Rsync() .flags('az') .source('/home/root/documents') .destination('/home/root/documents_backup'); // Execute the command rsync.execute(function(error, code, cmd) { // we're done }); cmd = new Rsync() .flags .source 我去terminal,打开保存的目录,然后inputnode test.js. 显示了“All done executed”一行,但是“documents_backup”中的“documents”没有文件。 有谁知道为什么这个脚本不能正常工作? 或者如何正确使用rsync的node.js版本。 我似乎无法得到一个Linux发行版与gcc在galileo板上编译和安装rsync,所以我恐怕这可能是我可以得到的。 提前致谢。

如何从脚本(nodejs)运行rsync来识别ssh publickey

奇怪的问题在这里。 运行通过ssh调用rsync的脚本会抛出 “权限被拒绝(publickey)。rsync:连接意外closures(到目前为止收到0字节)[receiver]” 奇怪的是: SSH用户@主机的作品,所以SSH密钥都设置正确 logging和粘贴由脚本产生的命令到terminal的作品 从脚本运行whoami显示正确的用户,环境通过process.env传递到产生的实例 从脚本运行ssh用户@主机不会抛出错误并返回缓冲区,这似乎工作 运行脚本(只是执行已经testing过的命令)会引发上述错误 var spawn = require('child_process').spawn; spawn('rsync', [ '-avc', '–delete', '"'+src+'"' , '–link-dest="'+path.join(dest, folder_name)+'"', '"'+path.join(dest, 'latest/')+'"' ],{ cwd: process.cwd(), env: process.env });