ftp上传文件到目录中的shell脚本

发布时间:2019-09-30编辑:脚本学堂
本文介绍下,在shell脚本中,用简单的二条命令,即可实现ftp上传文件到指定目录中的方法。有需要的朋友,作个参考吧。

说明:
上传目录为/home/zh/var。

代码如下:
 

复制代码 代码示例:
#!/bin/bash
#edit by www.jb200.com
sss=`find /home/zh/var -type d -printf '%Pn'| linuxjishu/13830.html target=_blank class=infotextkey>awk '{if ($0 == "")next;print "mkdir " $0}'`
aaa=`find /home/zh/var -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,保守的重定向输入流

重点如下的二句:
1,sss=`find /home/zh/var -type d -printf '%Pn'| awk '{if ($0 == "")next;print "mkdir " $0}'` 
使用find找出目录结构,然后格式化输出,最后就是添加到FTP初始化目录结构。
2,aaa=`find /home/zh/var -type f -printf 'put %p %P n'`
使用find找出非目录文件,然后格式化输出,最后就是在初始化目录之后可以直接使用put上传文件。

以下代码,可以方便设置上传目录 和 远程目录。供大家参考。
 

复制代码 代码示例:
#!/bin/bash
#edit by www.jb200.com
updir=/home/zh/var
todir=sk
sss=`find $updir -type d -printf $todir/'%Pn'| 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