为什么我的tar.gz文件在ssh2_scp_send函数的传输过程中被截断了?

时间:2015-11-28 03:40:04

标签: php ssh

我的本​​地电脑中有一个文件。

ls -al /tmp/back.tar.gz
-rw-r--r-- 1 root root 11219553 Nov 29 23:13 /tmp/back.tar.gz

让我们将带有ssh2_scp_send的back.tar.gz上传到我的远程vps中。

<?php
    $vps_ip= 'xxxx';
    $port = 'yyyy';
    $user = 'root';
    $passwd = 'zzzz';
    $connection = ssh2_connect($vps_ip, $port);
    ssh2_auth_password($connection,$user,$passwd);
    ssh2_scp_send($connection,'/tmp/back.tar.gz','/home/back.tar.gz');
?>

使用ssh -p yyyy root@xxxx登录ssh,在我的vps中执行ls命令。

ls  -al  /home/back.tar.gz
-rw-r--r-- 1 root root 11206656 Nov 29 10:10 /home/back.tar.gz

剩下的12897个字节在哪里?

现在我在我的本地电脑上将文件/tmp/back.tar.gz上传到远程vps第二次,当php程序执行时。
使用ssh -p yyyy root@xxxx登录ssh,在我的vps中执行ls命令。

ls  -al  /home/back.tar.gz
-rw-r--r-- 1 root root 11219505 Nov 29 10:10 /home/back.tar.gz

我认为ssh2_scp_send函数中存在一个错误,它不稳定。 我已经用scp命令测试了三次:

scp -P  $port root@$vps_ip:/home/back.tar.gz    /tmp

使用ssh -p yyyy root@xxxx登录ssh,在我的vps中执行ls命令。

ls  -al  /home/back.tar.gz
-rw-r--r-- 1 root root 11219553 Nov 29 10:10 /home/back.tar.gz

我的结论是ssh2_scp_send函数中的一些错误。

1 个答案:

答案 0 :(得分:0)

缓冲区在这里工作。

Enable Source Control

在关闭连接之前在缓冲区中写入字节。