如何通过其他进程FTP文件的SCP文件并在完成时删除它们?

时间:2014-08-21 10:11:53

标签: linux file ftp scp

通过FTP协议将文件传输到我的机器上的目录。我需要将SCP这些文件发送到另一台机器上。完成后删除它们。 如何通过FTP检测文件转移是否已完成& SCP可以安全地存档吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你可以这样做一个脚本:

#!/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 ,但您可以更改它。