【问题标题】:How to SCP files which are being FTPed by another process &delete them on completion?如何 SCP 正在被另一个进程 FTP 传输的文件并在完成时删除它们?
【发布时间】:2014-08-21 10:11:53
【问题描述】:

文件正在通过 FTP 协议传输到我机器上的目录。我需要将这些文件 SCP 到另一台机器并在完成时删除它们。 如何检测 FTP 的文件传输是否已完成并且文件是否可以安全地进行 SCP?

【问题讨论】:

    标签: linux file ftp scp


    【解决方案1】:

    没有可靠的方法来检测传输是否完成。有些客户端在实际上传文件之前发送 ALLO 命令并传递文件的大小,但这不是一个明确的规则,所以你不能依赖它。总而言之,客户端可能会流式传输数据,并且在其一侧没有明确的文件“结尾”。

    如果客户端在你的控制之下,你可以让它上传扩展名为A的文件,上传后将文件重命名为扩展名B。然后你只传输扩展名B的文件。

    【讨论】:

      【解决方案2】:

      你可以这样写一个脚本:

      #!/bin/bash
      
      EXPECTED_ARGS=1
      E_BADARGS=65
      
      #Arguments control
      if [ $# -lt $EXPECTED_ARGS ]
      then
        echo "Usage: `basename $0` <folder_update_1> <folder_update_2> <folder_update_3> ..."
        exit $E_BADARGS
      fi
      
      folders=( "$@" )
      for folder in ${folders[@]} 
      do
          #Send folder or file to new machine 
          time rsync --update -avrt -e ssh /local/path/of/$folder/ user@192.168.0.10:/remote/path/of/$folder/
      
          #Delete local file or folder
          rm -r /local/path/of/$folder/
      done
      

      它被配置为发送文件夹。如果您希望文件需要对脚本进行少量更改:

          time rsync --update -avrt -e ssh /local/path/of/$file user@192.168.0.10:/remote/path/of/$file
          rm /local/path/of/$file/
      

      Rsync 类似于 scp。我更喜欢使用 rsync,但您可以更改它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-06
        • 2016-09-21
        • 1970-01-01
        • 2012-08-04
        • 2021-06-08
        • 1970-01-01
        相关资源
        最近更新 更多