java远程连接linux执行cp拷贝文件问题

fengsanle 发布于 2016/03/04 17:07
阅读 1K+
收藏 0
 哪位大神帮忙解答一下,我java远程连接linux执行cp拷贝文件,拷贝小文件的时候可以成功,拷贝大文件的时候就会失败,这个是什么原因引起的
加载中
0
xpbob
xpbob
没有你这么一说,只要你权限够(先看看你是什么身份执行命令),执行的命令不会根据文件大小而不同,建议分开来做,首先确定你执行的这个命令能达到你的要求,你顺便把命令的返回值获取到
f
fengsanle
还是找不到原因,最后用了楼下的那位的代码实现了,实在不好意思
xpbob
xpbob
@fengsanle 你解决了问题,告诉我一下为什么会这样,我想不到原因
xpbob
xpbob
回复 @fengsanle : 权限呢,就是执行java程序所在的用户对文件的操作权限呢
f
fengsanle
用命令执行是可以成功的
xpbob
xpbob
回复 @fengsanle : 我是说你在机器上用cp命令去操作,如果Linux手写能够成功,但是程序调用失败,这可真奇怪
下一页
0
sss6666
sss6666
非要这么干么,尝试一下ftp不行么?
f
fengsanle
我是在linux系统拷贝,在同一台机子上面
0
cafelication
cafelication

可以试试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();

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

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

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

0
f
fengsanle

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

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

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

返回顶部
顶部