shell---两句命令打造FTP上传文件夹

简单代码如下:需上传目录为/root/sk

#!/bin/bash 
sss=`find /root/sk -type d -printf ‘%P\n‘| awk ‘{if ($0 == "")next;print "mkdir " $0}‘` 
aaa=`find /root/sk -type f -printf ‘put %p %P \n‘`
ftp -nv 127.0.0.1 <<EOF 
user kabc kabc 
type binary 
prompt 
$sss 
$aaa 
quit 
EOF

简要说明:

核心思想:1.初始化上传目录结构

2.初始化目录之后就可以直接使用put命令上传文件了

3.主要还是使用ftp自身的命令

4.格式化输出(可看作是FTP的宏命令)

5.保守的重定向输入流

核心语句只有两句

sss=`find /root/sk -type d -printf ‘%P\n‘| awk ‘{if ($0 == "")next;print "mkdir " $0}‘`

这句主要是使用find找出目录结构,然后格式化输出,最后就是添加到FTP初始化目录结构。

aaa=`find /root/sk -type f -printf ‘put %p %P \n‘`

这句主要是使用find找出非目录文件,然后格式化输出,最后就是在初始化目录之后可以直接使用put上传文件。

小白优化版

下面这个方便设置上传目录 和 远程目录 ,有空改写成函数

 #!/bin/bash 
updir=/root/sk
todir=sk
sss=`find $updir -type d -printf $todir/‘%P\n‘| awk ‘{if ($0 == "")next;print "mkdir " $0}‘` 
aaa=`find $updir -type f -printf ‘put %p %P \n‘` 
ftp -nv 127.0.0.1 <<EOF 
user kabc kabc 
type binary 
prompt 
$sss 
cd $todir 
$aaa 
quit 
EOF

升级版

#!/bin/bash 
updir=/root/sk    #要上传的文件夹
todir=sk          #目标文件夹   
ip=127.0.0.1      #服务器
user=leo          #ftp用户名
password=123456   #ftp密码
sss=`find $updir -type d -printf $todir/‘%P\n‘| awk ‘{if ($0 == "")next;print "mkdir " $0}‘` 
aaa=`find $updir -type f -printf ‘put %p %P \n‘` ftp -nv $ip <<EOF 
user $user $password
type binary 
prompt 
$sss 
cd $todir 
$aaa 
quit 
EOF
时间: 2024-10-12 20:57:05

shell---两句命令打造FTP上传文件夹的相关文章

shell中利用ftp 上传文件夹功能

我们知道ftp 只能用来上传或者下载文件,一次单个或者多个,怎么实现将文件夹的上传和下载呢? 可以利用先在remote ip上建立一个相同的文件夹目录,然后将文件放到各自的目录中去 1.循环遍历出要上传的文件夹中的文件夹目录 2.遍历出每个文件夹下的文件 3.逐一上传文件 ftp 命令 图中有众多的交互,我们不想让他显示这些交互 可以使用参数 屏蔽掉 ftp [-v] [-n] [-i] [-d] [-g] [-s:filename] [-a] [-w:windowsize] [computer

再看ftp上传文件

前言 去年在项目中用到ftp上传文件,用FtpWebRequest和FtpWebResponse封装一个帮助类,这个在网上能找到很多,前台使用Uploadify控件,然后在服务器上搭建Ftp服务器,在本地测试程序上传到ftp服务器一点问题都没有,奇怪的是当发布Web和ftp到同一个IIS下,上传文件时程序直接卡死,然后页面卡死,后来我又发现把Web和ftp分开发布在两台机器上问题又得到解决,所以当时放弃了这个方案. 再看ftp上传文件 前几天偶然看到Wolfy写到一个项目总结,其中提到了用Ser

C# FTP上传文件至服务器代码

C# FTP上传文件至服务器代码 /// <summary> /// 上传文件 /// </summary> /// <param name="fileinfo">需要上传的文件</param> /// <param name="targetDir">目标路径</param> /// <param name="hostname">ftp地址</param&g

Java ftp 上传文件和下载文件

今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接:http://blog.csdn.net/yucaifu1989/article/details/51483118 为了方便大家对比,我吧文章代码偷了过来: import java.io.File; import java.io.FileInputStream; import java.io.Fil

本地虚拟机中匿名ftp上传文件失败的问题

在10.10.50.230中新建了一个匿名的ftp服务器,结果在10.10.50.241中上传文件时提示: local: README.txt remote: /var/ftp/pub/upload 227 Entering Passive Mode (10,10,50,230,117,8). 553 Could not create file.   由于搭建步骤是完全按照标准文档建立的,vsftp.conf的设置应该没有问题,检查:getsebool -a|grep ftp 发现: allow

FTP上传文件速度太慢怎么办?

用户在建设网站时必不可少的一类工具就是文件传输工具.通过客户端和主机之间的文件交互,及时上传补丁文件.下载日志文件等,确保网站的正常稳定运行.但是也有不少用户反映使用FTP上传文件速度太慢,这是什么原因呢?FTP上传文件速度太慢怎么办?一.为什么FTP上传文件速度太慢? 运维人员在日常的工作中会使用FTP软件上传补丁.升级包.下载数据.日志等数据.FTP上传与下载速度慢,严重的影响运维人员的工作效率,与此同时一味的指责网络提供商,其实有些以偏概全. 为什么FTP上传文件速度太慢呢? FTP协议自

C++实现向FTP上传文件

连接 CInternetSession *m_pInetsession; CFtpConnection *m_pFtpConnection; m_pInetsession=new CInternetSession(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS); try { m_pFtpConnection=m_pInetsession->GetFtpConnection("127.0.0.1",NULL,NULL,38); Messa

通过cmd命令到ftp上下载文件

通过cmd命令到ftp上下载文件 点击"开始"菜单.然后输入"cmd"点"enter"键,出现cmd命令执行框 2 输入"ftp"切换到到ftp下面.然后输入"open 服务器地址".点击回车键.会提示你输入用户名和密码. 3 登陆成功后.输入"cd"命令.会显示"远程目录",输入"dir"命令会显示目录下的文件,权限等相关信息.可以通过"

FTP上传文件提示550错误原因分析。

今天测试FTP上传文件功能,同样的代码从自己的Demo移到正式的代码中,不能实现功能,并报 Stream rs = ftp.GetRequestStream()提示远程服务器返回错误: (550) 文件不可用(例如,未找到文件, 百度查找原因: 1.说文件权限: 2.路径是否正确: 3.路径是不是要加“@” 还有其他各类说法,逐一检查未发现错误,关键是同一个文件同样代码,一个程序可以正确完成上传,一个跳异常. 后来突然想到拷贝代码时FTP类提示using System.Linq;命名空间错误.