SSH2 PHP сжимает каталог с ошибкой EOF

У меня есть скрипт, который делает резервную копию с помощью php и библиотеки ssh2. Сценарий подключается к удаленному компьютеру с помощью ssh2 и выполняет задачи резервного копирования. Я хотел бы сжать каталог резервных копий, чтобы минимизировать время загрузки.

Мне удалось это сделать, но когда я открываю сжатый файл на своем локальном компьютере, он говорит: «неожиданный конец файла» :(

Я работаю на Ubuntu 11.10. и php5. На моей удаленной машине работает Centos.

Чтобы сжать файл, я использую tar для архивирования моего каталога резервных копий, а затем gzip, поэтому я заканчиваю myarchiveddir.tar.gz

Код выглядит следующим образом: ....

    $execO = ssh2_exec($conn,"cd /tmp/;tar -cf {$newFile}.tar myRemoteFolder");
    $execO = ssh2_exec($conn,"cd /tmp/;gzip {$newFile}.tar");
    $output = fclose($execO);

Я пытался и искал решение, но, кажется, я всегда заканчиваю в одной и той же точке. Может ли кто-нибудь пролить свет на эту проблему. Я новичок в библиотеке ssh2, поэтому я немного зеленый в этой области. Я уверен, что это не может быть так сложно, это должно быть что-то, что мне не хватает.

Спасибо заранее. Мануэль


person mmmdearte    schedule 06.02.2012    source источник


Ответы (1)


Разве myRemoteFolder не нужна косая черта / в конце?

person Adam Hopkinson    schedule 06.02.2012
comment
Привет, Адам, я проверил это, и tar соответственно архивирует папку. Так что проблем с конечным слэшем нет. Я также заметил, что могу открыть файл tar.gz, созданный на удаленной машине, но не на моей локальной машине. Теперь!, у меня есть gzip 1.3.12 на моем локальном компьютере и 1.3.5 на моем удаленном ???? - person mmmdearte; 06.02.2012
comment
Мне кажется, что есть какая-то проблема, когда я загружаю файл tar.gz. Возможно, с сеансом ssh2 - person mmmdearte; 06.02.2012
comment
Вы используете stream_set_blocking? - person Adam Hopkinson; 07.02.2012
comment
Нет, я не использую stream_set_blocking... Это интересно.... Я только что проверил эту функцию в php.net, и там есть комментарий относительно чего-то очень похожего на то, что происходит здесь: Прямо внизу страницы (php.net/manual/en/function.stream-set-blocking.php) Предупреждение: если вы запишете слишком много данных в поток в неблокирующем режиме и заполните буфер, лишнее будет молча отброшено. Наблюдается в PHP 4.4.0 под Linux. - person mmmdearte; 07.02.2012