首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash:使用FTP检查远程目录是否存在

问Bash:使用FTP检查远程目录是否存在
EN

Stack Overflow用户
提问于 2014-12-02 00:54:05
回答 1查看 12.5K关注 0票数 4

我正在编写一个bash脚本,将文件从linux服务器发送到远程Windows FTP服务器。在尝试创建文件之前,我想使用FTP检查将存储文件的文件夹是否存在。请注意,我不能使用SSH或SCP,也不能在linux服务器上安装新脚本。此外,对于性能问题,我更希望检查和创建文件夹只使用一个FTP连接。

下面是发送文件的函数:

代码语言:javascript
复制
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的样子:

代码语言:javascript
复制
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个现有目录组成):

代码语言:javascript
复制
(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.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-30 04:38:27

要解决此问题,请执行以下操作:

  1. 为确保只使用一个FTP连接,需要将输入(FTP命令)创建为shell脚本的输出

例如。

$ cat a.sh cd /home/test1mkdir /home/test1/test2 $ ./a.sh | ftp FTP >/ $Your_login_and_server /2>&1

  • 要允许FTP测试目录是否存在,您可以使用"DIR“命令具有在循环中写入file...continuing a.sh #的选项这一事实,$CURRENT_DIR是下一个要检查或创建echo "DIR $CURRENT_DIR $local_output_file“的子目录休眠5#如果(!-s $local_output_file) then echo "mkdir $CURRENT_DIR”endifPlease注意"-s"测试不一定正确-我现在不能访问ftp,也不知道在不存在的目录上运行DIR的确切输出会是什么-冷的是空文件,可能是一个特定的错误。如果出现错误,您可以在$local_output_file

  • Now,中对错误文本进行grep操作,将第2步包装成一个循环,遍历a.sh

中的各个子目录

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27233277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档