zhaohz

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Shell中ftp文件上传下载脚本(判断ftp目录是否存在)


- 文件下载

function get_ftp_data()
{
ftp_dir=$1
local_dir=$2

ftp -n<<!
open ${FTP_HOST}
user ${FTP_USERNAME} ${FTP_PASSWORD}
binary
cd ${ftp_dir}
lcd ${local_dir}
prompt
mget *
close
bye
!
}

 

- 检查文件夹是否存在

check_ftp_dir()
{
    ftp_dir=$1
    ftp -n -i ${FTP_HOST} <<EOF
user ${FTP_USERNAME} ${FTP_PASSWORD}
cd ${ftp_dir}
bye
EOF
}


# 清空上一次记录的目标主机日志的信息
local_record='check-ftp-dir.log';
cat '' > ${local_record}

# 调用函数获取目标主机中的路径的日志并记录到record.log中
check_ftp_dir "${ftp_dir}" > ${local_record}

# 调用方法判断获取目录信息,判断文件夹是否存在
grep -c 'Failed to change directory.' ${local_record}
if [ `grep -c 'Failed to change directory.' ${local_record}` -eq 1 ];then
 echo '文件夹不存在!'
 else
 echo '文件夹存在!'
fi


- mget命令注意事项

- mget \* 下载当前目录所有文件,不能指定目标目录,也不能下载子目录(不能类似这样写:mget /opt/data/\*,实测这样写系统会当做\*处理)
- 目录切换失败时,会停留在当前目录(可能是根目录),这时候再执行mget \* 会把当前目录文件都下载下来,这并不是我们想要的结果
- 所以,使用mget *命令前,一定要判断ftp目录是否存在

posted on 2020-02-21 19:50  zzhaoh  阅读(2982)  评论(0编辑  收藏  举报