作为背景,我需要在服务器之间传输文件,为此,我尝试编写一个bash脚本,该脚本只使用wget检索最新文件并将其上传。
问题是,我使用的是带有-N标志的wget,在下载最新文件的同时,这也意味着当我使用wput时,我会上传所有的文件,而不仅仅是最新的文件。更棘手的是,我必须上传到一个特定的目录,一旦上传,它们就会被移到另一个目录,所以我不能使用我在过去上传的内容作为向导。
我想要的是只上传已经下载的最新文件,如果没有下载,脚本就退出。
对于我如何实现这一点的任何帮助都将不胜感激,我的当前代码如下:
#!/bin/bash
# Redirect stdout ( > ) into a named pipe ( >() ) running "tee"
exec > >(tee -i update_logfile.txt)
exec 2>&1
today="$(date +'%d%m%Y')"
printf "Record load started: %s\n" "$today"
echo "get records"
wget -N ftp://[user1]:[pass1]@[ftp-server-1]/*.* -P /path/to/temp/
echo "put records"
wput --basename=/path/to/temp/ -u /path/to/temp/*.* ftp://[user2]:[pass2]@[ftp-server-2]/update/
echo "upload finished"
mail -s "Upload" my_email@domain.com < update_logfile.txt发布于 2019-10-16 08:59:06
Joesch-简单的方法是编写一个lastCheck,其时间戳为最后一次下载到一个文件文件中,并根据要上传的文件的最后修改来检查时间戳。如果teh文件更新,那么时间戳,上传它。这应该是相当简单的做法,但请让我知道,我可以为你把片段放在一起。
https://stackoverflow.com/questions/58409433
复制相似问题