我在寫一個bash腳本來將文件從linux服務器發送到遠程Windows FTP服務器。 我想檢查使用FTP,如果文件將被存儲的文件夾存在之前嘗試創建它。 請注意,我不能使用SSH和SCP,也無法在Linux服務器上安裝新腳本。另外,對於性能問題,我更希望如果僅使用一個FTP連接檢查和創建文件夾。Bash:檢查是否存在使用FTP的遠程目錄
這裏的功能來發送文件:
sendFile() {
ftp -n $FTP_HOST <<! >> ${LOCAL_LOG}
quote USER ${FTP_USER}
quote PASS ${FTP_PASS}
binary
$(ftp_mkdir_loop "$FTP_PATH")
put ${FILE_PATH} ${FTP_PATH}/${FILENAME}
bye
!
}
而這裏的ftp_mkdir_loop
樣子:
ftp_mkdir_loop() {
local r
local a
r="[email protected]"
while [[ "$r" != "$a" ]]; do
a=${r%%/*}
echo "mkdir $a"
echo "cd $a"
r=${r#*/}
done
}
的ftp_mkdir_loop
功能在$FTP_PATH
創建所有的文件夾可以幫助(因爲我不能做mkdir -p $FTP_PATH
通過FTP)。
總的來說,我的腳本工作,但不是「乾淨」;這就是我得到在我的日誌文件中的腳本執行後(是的,$FTP_PATH
由5個現有的目錄):
(directory-name) Cannot create a file when that file already exists.
Cannot create a file when that file already exists.
Cannot create a file when that file already exists.
Cannot create a file when that file already exists.
Cannot create a file when that file already exists.
具有諷刺意味的是,sftp不支持寫入本地文件,所以這個解決方案只適用於純FTP ftp – DVK 2014-12-29 20:39:20
我無法實現這個解決方案。你能否詳細說明一下?我仍然不是很多用bash腳本編寫的。 – grim 2014-12-30 16:36:37
當我執行'DIR $ CURRENT_DIR $ local_output_file'時''無效的命令' $ local_output_file究竟是什麼? – grim 2014-12-30 16:54:22