只有从Node运行时,Rsync才会以退出代码23失败

时间:2013-12-05 22:09:18

标签: javascript node.js shell rsync exit-code

我正在使用rsync module与节点v0.10.22。当从Node运行时,Rsync退出代码23(由于错误导致的部分传输),但是当从与崩溃的节点进程完全相同的shell运行时成功。

以下是我正在使用的代码:

var r = new Rsync()
  .flags('a')
  .include('*.png')
  .exclude('*')
  .source(path.join('source/*'))
  .destination('target')
  .execute(function (err, code, cmd) {
    if (err && code === 23) {
      console.log('Exited with 23');
      console.log(cmd);
    }
  });

记录的cmd如下:

rsync -a --include="*.png" --exclude="*" source/* target

当Node在同一个shell中崩溃后执行那个确切的命令时,命令返回0(没有错误,它有效)。

我查看了rsync.js产生命令的地方:

// Execute the command as a child process
var cmdProc = spawn(this.executable(), this.args(), { stdio: 'pipe' });

this.executable()返回'rsync'this.args()会返回['-a', '--include="*.png"', '--exclude="*", 'source/*', 'target/']

这里发生了什么?为什么从Node运行时获得不同的退出代码,而不是在运行Node的同一个shell中运行?

编辑:我将每个目录的权限设置为777,我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:0)

源中的glob未展开,因此rsync尝试在*目录中查找名为source的文件。将来源更改为source/