Linux 如何将另一个进程正在FTP的SCP文件删除并在完成时将其删除?
文件正在通过FTP协议传输到我机器上的一个目录。我需要将这些文件SCP到另一台机器上,并在完成时删除它们。Linux 如何将另一个进程正在FTP的SCP文件删除并在完成时将其删除?,linux,file,ftp,scp,Linux,File,Ftp,Scp,文件正在通过FTP协议传输到我机器上的一个目录。我需要将这些文件SCP到另一台机器上,并在完成时删除它们。 如何检测是否已通过FTP进行了文件传输&文件可以安全地执行SCP 没有可靠的方法来检测传输的完成情况。有些客户端在实际上载文件之前发送ALLO命令并传递文件大小,但这不是一个明确的规则,因此您不能依赖它。总而言之,客户机可能会流式传输数据,并且在其一侧没有明确的文件结尾 如果客户端在您的控制下,您可以让它上载扩展名为A的文件,并在上载后将文件重命名为扩展名B。然后您只传输扩展名为B的文件。
如何检测是否已通过FTP进行了文件传输&文件可以安全地执行SCP 没有可靠的方法来检测传输的完成情况。有些客户端在实际上载文件之前发送ALLO命令并传递文件大小,但这不是一个明确的规则,因此您不能依赖它。总而言之,客户机可能会流式传输数据,并且在其一侧没有明确的文件结尾
如果客户端在您的控制下,您可以让它上载扩展名为A的文件,并在上载后将文件重命名为扩展名B。然后您只传输扩展名为B的文件。您可以执行如下脚本:
#!/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
Rsync与scp类似。我更喜欢使用rsync,但您可以更改它
time rsync --update -avrt -e ssh /local/path/of/$file user@192.168.0.10:/remote/path/of/$file
rm /local/path/of/$file/