正在通过FTP协议将文件传输到我机器上的目录。我需要将这些文件SCP到另一台机器上,并在完成时删除它们。如何检测文件传输是否已通过FTP完成&文件可以安全地执行SCP?
发布于 2014-08-21 18:38:11
没有可靠的方法来检测传输的完成情况。一些客户端在实际上传文件之前发送ALLO命令并传递文件的大小,但这并不是一个明确的规则,所以你不能依赖它。总而言之,客户端有可能会流式传输数据,而文件本身并没有明确的“结束”。
如果客户端在您的控制之下,您可以让它上传扩展名为A的文件,并在上传后将文件重命名为扩展名B,然后只传输扩展名为B的文件。
发布于 2014-08-21 19:25:33
您可以像这样编写脚本:
#!/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,但您可以更改它。
https://stackoverflow.com/questions/25423667
复制相似问题