你的位置:
问答吧
-> Unix
-> 问题详情
如何用 scp命令创建文件夹
如题:
如果是目录已经存在的话 用
http://topic.youkuaiyun.com/u/20100916/10/394ccc60-4232-46be-8f30-87327583a8f8.html
可以把文件给传到服务器上,可当文件夹不存在的话不能自动创建。
请问如何创建呢
作者: guofc_presoft
发布时间: 2010-09-17
推荐你使用rsync 也很happy的!
作者: steptodream
发布时间: 2010-09-17
谢谢 不过 客户指定要用SCP命令 SSH来实现
scp -r C:\imart\lst root@10.4.2.77:/usr/gms/20100915/0002/lst
我现在写这样的命令怎么不好用呢!
也不知道文件夹是否能生成出来!
作者: guofc_presoft
发布时间: 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();
}
作者: guofc_presoft
发布时间: 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
命令在怎么也不好用呢
作者: guofc_presoft
发布时间: 2010-09-17
看你的命令是没啥问题的哟 我在linux里就这么用的 既然要求 那你就用scp了 scp也是很方便的
PS:rsync也可以通过ssh传输
作者: steptodream
发布时间: 2010-09-17
ssh username@192.168.*.* "@mkdir /a"
---------
这样也是没问题的 但是你这个username要有在/下创建文件夹的权限才可以。
作者: steptodream
发布时间: 2010-09-17
我 是调用 上面的 runSSH() 这个方法
可执行完就没什么反应了
作者: guofc_presoft
发布时间: 2010-09-17
引用 7 楼 guofc_presoft 的回复:
我 是调用 上面的 runSSH() 这个方法
可执行完就没什么反应了
要是能在命令行执行的话 你现在命令行执行试试
你用代码来操作 万一是你自己代码的问题呢?
作者: steptodream
发布时间: 2010-09-17
也有权限啊
郁闷死了
那老大知道如何创建文件夹吗
作者: guofc_presoft
发布时间: 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();
}
如这些传送文件都可以用!
另外 命令行执行 需要在哪里执行,需要什么环境吗?
作者: guofc_presoft
发布时间: 2010-09-17
引用 9 楼 guofc_presoft 的回复:
也有权限啊
郁闷死了
那老大知道如何创建文件夹吗
scp是会自己建文件夹的呀 我刚刚试了。
作者: steptodream
发布时间: 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
作者: guofc_presoft
发布时间: 2010-09-17
你在windows下用winscp这个工具 往服务器上传文件试试
http://sourceforge.net/projects/winscp/
作者: steptodream
发布时间: 2010-09-17
那你把命令改成
scp -r C:\imart\lst root@10.4.2.77:/usr/gms/20100915/0002/
这样试试呢?
作者: steptodream
发布时间: 2010-09-17
winscp 这个工具我有,用ROOT用户登陆后建立文件夹都可以!
不过 我现在做的是BAT 需要自动创建文件夹以及COPY文件
作者: guofc_presoft
发布时间: 2010-09-17
引用 14 楼 steptodream 的回复:
那你把命令改成
scp -r C:\imart\lst root@10.4.2.77:/usr/gms/20100915/0002/
这样试试呢?
这种也不行,调用上面的runSSH方法一点反应都没有。
作者: guofc_presoft
发布时间: 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
作者: steptodream
发布时间: 2010-09-17
引用 6 楼 steptodream 的回复:
ssh username@192.168.*.* "@mkdir /a"
---------
这样也是没问题的 但是你这个username要有在/下创建文件夹的权限才可以。
这个SSH命令也可以用 runSSH() 这个方法执行吗
作者: guofc_presoft
发布时间: 2010-09-17
引用 10 楼 guofc_presoft 的回复:
恩 我 用其他的方法
public static void scpPut(String host, String username, String password,
String localFile, String remoteDir) throws IOException {
if (logger.isDebugEnabled()) {
logger.d……
调用这个方法,如何判断没有文件夹的时候,把文件夹给建立起来啊 !
各位!
作者: guofc_presoft
发布时间: 2010-09-17