2013-12-05 1 views
1

Я использую rsync module с узлом v0.10.22. Rsync завершает с кодом 23 (Частичный перенос из-за ошибки) при запуске с узла, но успешно выполняется из той же самой точной оболочки, что и разбитый процесс узла.Ошибка Rsync с кодом выхода 23 только при запуске с узла

Вот код, я использую:

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 

Когда я исполняю, что точная команда после узла происходит сбой в одной оболочке командной возвращает 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/'].

Что здесь происходит? Почему я получаю другой код выхода при работе с узлом, а не в той же оболочке, где я запускаю узел?

Редактировать: Я установил разрешения для каждой директории как 777, и я все еще получаю ту же ошибку.

+0

в каком 'cwd' запуске' '' '' '' '' '' '' '' '' '' '' '' '' – Mohsen

+0

Добавьте 'console.log (err)' также и добавьте его в свой пост. Должна быть дополнительная информация о причине ее отказа. –

+0

Пути на самом деле абсолютные, поэтому это не имеет значения. Я сократил их ради этого вопроса. Чтобы быть уверенным, я изменил команду 'spawn', чтобы установить свойство' cwd' в корневой каталог моего проекта, и у меня все еще проблема. – KPthunder

ответ

0

Глобус в источнике не расширен, поэтому rsync пытается найти файл с именем * в каталоге source. Измените источник на source/.