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