如何用 scp命令创建文件夹

「已注销」 2010-09-17 03:21:50
如题:
如果是目录已经存在的话 用
http://topic.csdn.net/u/20100916/10/394ccc60-4232-46be-8f30-87327583a8f8.html
可以把文件给传到服务器上,可当文件夹不存在的话不能自动创建。

请问如何创建呢
...全文
4479 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 guofc_presoft 的回复:]
调用的是下面的方法


public static int runSSH(String host, String username, String password,

String cmd) throws IOException {

if (logger.isDebugEnabled()) {

logger.debug("runnin……
[/Quote]

调用这个方法之后 line 返回NULL值是什么意思啊
下面的这几行代码是做什么用的呢

跟我 执行 COPY 文件的操作也没关系把

String line = br.readLine();

if (line == null)

break;

if (logger.isDebugEnabled()) {

logger.debug(line);

}


「已注销」 2010-09-20
  • 打赏
  • 举报
回复
晕了 就是不好用,不知道如何解决
steptodream 2010-09-17
  • 打赏
  • 举报
回复
你这样在程序里弄 我也没弄过 直接使用scp会自己创建文件夹 我上面都测试了
「已注销」 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 guofc_presoft 的回复:]
恩 我 用其他的方法

public static void scpPut(String host, String username, String password,

String localFile, String remoteDir) throws IOException {

if (logger.isDebugEnabled()) {

logger.d……
[/Quote]

调用这个方法,如何判断没有文件夹的时候,把文件夹给建立起来啊 !
各位!
「已注销」 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 steptodream 的回复:]
ssh username@192.168.*.* "@mkdir /a"
---------
这样也是没问题的 但是你这个username要有在/下创建文件夹的权限才可以。
[/Quote]

这个SSH命令也可以用 runSSH() 这个方法执行吗
steptodream 2010-09-17
  • 打赏
  • 举报
回复
难道你这里用 和我linux里还有区别?
我在linux里 /path1/path2/是存在的
scp -r /path/folder root@ip:/path1/path2/
然后ip机器的/path1/path2/下就会有folder文件夹 即/path1/path2/folder

scp -r /path/folder root@ip:/path1/path2/folder
结果同上

scp -r /path/folder root@ip:/path1/path2/test
然后folder下的内容 会在/path1/path2/test/下 也就是说没产生folder

scp -r /path/folder root@ip:/path1/path2/test1/folder
其中test1目录不存在 这种情况就会出错
scp: /path1/path2/test1/folder: No such file or directory
「已注销」 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 steptodream 的回复:]
那你把命令改成
scp -r C:\imart\lst root@10.4.2.77:/usr/gms/20100915/0002/
这样试试呢?
[/Quote]

这种也不行,调用上面的runSSH方法一点反应都没有。
「已注销」 2010-09-17
  • 打赏
  • 举报
回复
winscp 这个工具我有,用ROOT用户登陆后建立文件夹都可以!
不过 我现在做的是BAT 需要自动创建文件夹以及COPY文件
steptodream 2010-09-17
  • 打赏
  • 举报
回复
那你把命令改成
scp -r C:\imart\lst root@10.4.2.77:/usr/gms/20100915/0002/
这样试试呢?
steptodream 2010-09-17
  • 打赏
  • 举报
回复
你在windows下用winscp这个工具 往服务器上传文件试试
http://sourceforge.net/projects/winscp/
「已注销」 2010-09-17
  • 打赏
  • 举报
回复
但是我调用 scpPut() 这个方法,如果是路径正确的话就可以COPY过去
如果是没有文件夹的话就会报错误。
Error during SCP transfer.
at ch.ethz.ssh2.SCPClient.put(SCPClient.java:575)
at ch.ethz.ssh2.SCPClient.put(SCPClient.java:533)
at ch.ethz.ssh2.SCPClient.put(SCPClient.java:394)
at jp.co.u_can.manabi.imp.batch.DeliveryInstructionBatch.scpPut(DeliveryInstructionBatch.java:444)
at jp.co.u_can.manabi.imp.batch.DeliveryInstructionBatch.execute(DeliveryInstructionBatch.java:366)
at jp.co.u_can.manabi.imp.batch.DeliveryInstructionBatch.main(DeliveryInstructionBatch.java:241)
Caused by: java.io.IOException: Remote scp terminated with error (scp: /usr/gms/20100915/0002/lst: No such file or directory).
at ch.ethz.ssh2.SCPClient.readResponse(SCPClient.java:59)
at ch.ethz.ssh2.SCPClient.sendFiles(SCPClient.java:163)
at ch.ethz.ssh2.SCPClient.put(SCPClient.java:571)
... 5 more
steptodream 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 guofc_presoft 的回复:]

也有权限啊
郁闷死了
那老大知道如何创建文件夹吗
[/Quote]
scp是会自己建文件夹的呀 我刚刚试了。
「已注销」 2010-09-17
  • 打赏
  • 举报
回复
恩 我 用其他的方法

public static void scpPut(String host, String username, String password,

String localFile, String remoteDir) throws IOException {

if (logger.isDebugEnabled()) {

logger.debug("spc [" + localFile + "] to " + host + remoteDir);

}

Connection conn = getOpenedConnection(host, username, password);

SCPClient client = new SCPClient(conn);

client.put(localFile, remoteDir);

conn.close();

}
如这些传送文件都可以用!

另外 命令行执行 需要在哪里执行,需要什么环境吗?
「已注销」 2010-09-17
  • 打赏
  • 举报
回复
也有权限啊
郁闷死了
那老大知道如何创建文件夹吗
steptodream 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 guofc_presoft 的回复:]

我 是调用 上面的 runSSH() 这个方法
可执行完就没什么反应了
[/Quote]
要是能在命令行执行的话 你现在命令行执行试试
你用代码来操作 万一是你自己代码的问题呢?
「已注销」 2010-09-17
  • 打赏
  • 举报
回复
我 是调用 上面的 runSSH() 这个方法
可执行完就没什么反应了
steptodream 2010-09-17
  • 打赏
  • 举报
回复
ssh username@192.168.*.* "@mkdir /a"
---------
这样也是没问题的 但是你这个username要有在/下创建文件夹的权限才可以。
steptodream 2010-09-17
  • 打赏
  • 举报
回复
看你的命令是没啥问题的哟 我在linux里就这么用的 既然要求 那你就用scp了 scp也是很方便的

PS:rsync也可以通过ssh传输
「已注销」 2010-09-17
  • 打赏
  • 举报
回复
先用ssh建立对方机器的文件夹/a
ssh username@192.168.*.* mkdir /a
再用scp拷贝
scp /a/b.mp3 username@192.168.*.*:/a/b.mp3

ssh 和 scp 都有相应的命令吗?》我 在上面的方法中执行的是 ssh username@192.168.*.* mkdir /a

命令在怎么也不好用呢
「已注销」 2010-09-17
  • 打赏
  • 举报
回复
调用的是下面的方法


public static int runSSH(String host, String username, String password,

String cmd) throws IOException {

if (logger.isDebugEnabled()) {

logger.debug("running SSH cmd [" + cmd + "]");

}

Connection conn = getOpenedConnection(host, username, password);

Session sess = conn.openSession();

sess.execCommand(cmd);

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

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

while (true) {

// attention: do not comment this block, or you will hit
// NullPointerException

// when you are trying to read exit status

String line = br.readLine();

if (line == null)

break;

if (logger.isDebugEnabled()) {

logger.debug(line);

}

}

sess.close();

conn.close();

return sess.getExitStatus().intValue();

}
加载更多回复(2)

2,161

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 UNIX文化
社区管理员
  • UNIX文化社区
  • 文天大人
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧