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目录是否存在