我正在编写一个bash脚本,将文件从linux服务器发送到远程Windows FTP服务器。在尝试创建文件之前,我想使用FTP检查将存储文件的文件夹是否存在。请注意,我不能使用SSH或SCP,也不能在linux服务器上安装新脚本。此外,对于性能问题,我更希望检查和创建文件夹只使用一个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="$@"
while [[ "$r" != "$a" ]]; do
a=${r%%/*}
echo "mkdir $a"
echo "cd $a"
r=${r#*/}
done
}FTP函数帮助创建$FTP_PATH中的所有文件夹(因为我不能通过ftp_mkdir_loop执行mkdir -p $FTP_PATH )。
总体而言,我的脚本可以工作,但不是“干净”的;这是我在执行脚本后在日志文件中得到的结果(是的,$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.发布于 2014-12-30 04:38:27
要解决此问题,请执行以下操作:
例如。
$ cat a.sh cd /home/test1mkdir /home/test1/test2 $ ./a.sh | ftp FTP >/ $Your_login_and_server /2>&1
"-s"测试不一定正确-我现在不能访问ftp,也不知道在不存在的目录上运行DIR的确切输出会是什么-冷的是空文件,可能是一个特定的错误。如果出现错误,您可以在$local_output_file
中的各个子目录
https://stackoverflow.com/questions/27233277
复制相似问题