我在写一个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