5
回答
java远程连接linux执行cp拷贝文件问题
华为云4核8G,高性能云服务器,免费试用   
 哪位大神帮忙解答一下,我java远程连接linux执行cp拷贝文件,拷贝小文件的时候可以成功,拷贝大文件的时候就会失败,这个是什么原因引起的
举报
fengsanle
发帖于2年前 5回/981阅
共有5个答案 最后回答: 2年前
没有你这么一说,只要你权限够(先看看你是什么身份执行命令),执行的命令不会根据文件大小而不同,建议分开来做,首先确定你执行的这个命令能达到你的要求,你顺便把命令的返回值获取到
--- 共有 6 条评论 ---
fengsanle还是找不到原因,最后用了楼下的那位的代码实现了,实在不好意思 2年前 回复
xpbob@fengsanle 你解决了问题,告诉我一下为什么会这样,我想不到原因 2年前 回复
xpbob回复 @fengsanle : 权限呢,就是执行java程序所在的用户对文件的操作权限呢 2年前 回复
fengsanle用命令执行是可以成功的 2年前 回复
xpbob回复 @fengsanle : 我是说你在机器上用cp命令去操作,如果Linux手写能够成功,但是程序调用失败,这可真奇怪 2年前 回复

可以试试http://blog.sina.com.cn/s/blog_68fec59801015f5n.html

建立一个SFTP客户端        

SFTPv3Client sftpClient = new SFTPv3Client(con);

//远程新建目录

sftpClient.mkdir("newRemoteDir", 6);

//远程删除目录

sftpClient.rmdir(RemoteDir);

//远程新建文件          

sftpClient.createFile("newRemoteFile");

//远程打开文件,可进行读写

sftpClient.openFileRW("remoteFile");

//建立会话

Session session = null;

session = con.openSession();

//利用会话可以操作远程服务器

//例如:删除远程目录下的文件

session.execCommand("rm -f".concat(remotePath).concat(qrCodeFileMode));

//显示执行命令后的信息

InputStream stdout = new StreamGobbler(session.getStdout());

BufferedReader br = new BufferedReader(new InputStreamReader(stdout));

 

while (true) {

String line = br.readLine();

    if (line == null) {

       log.info("远程服务器返回信息:");

           break;

    }

    log.info("远程服务器返回信息:" + line);

}

//获得推出状态

System.out.println("ExitCode: " + session.getExitStatus());

session.close();

con.close();

--- 共有 2 条评论 ---
cafelication回复 @fengsanle : 抱歉 我也没试过,只是百度了下 2年前 回复
fengsanle我用了你的代码,可以实现成功,但是一直获取不到返回值,这个要怎么解决,谢谢 2年前 回复

看日志,看日志,看日志。重要的事情说三遍。

什么信息都没有,代码也没有,错误信息也没有,鬼才知道怎么回事呢

不好意思,我再补充一下代码、进程、日志,

cmd是一个拷贝命令cp /路径/文件名 /路径/文件名。

我是root远程登录,执行cp命令,然后进程那里cp进程只存在几秒就不见了,小文件拷贝可以成功,linux端命令拷贝也是成功的,之前没描述好还请见谅

顶部