Bash 仅对最新文件使用wget和wput

Bash 仅对最新文件使用wget和wput,bash,ftp,wget,Bash,Ftp,Wget,对于后台,我有需要在服务器之间传输的文件,为此,我尝试编写了一个bash脚本,该脚本使用wget只检索最新的文件,并使用wput上传它们 问题是我使用带-N标志的wget,虽然这会下载最新的文件,但也意味着当我开始使用wput时,我会上载所有文件,而不仅仅是最新的文件。更棘手的是,我必须上传到一个特定的目录,一旦上传,它们就会被移动到另一个目录,所以我不能使用我过去上传的内容作为指导 我想只上传已下载的最新文件,如果未下载任何文件,则退出脚本 如果您能为我提供帮助,我将不胜感激,我当前的代码如下

对于后台,我有需要在服务器之间传输的文件,为此,我尝试编写了一个bash脚本,该脚本使用wget只检索最新的文件,并使用wput上传它们

问题是我使用带-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
#/bin/bash
#将stdout(>)重定向到运行“tee”的命名管道(>())
exec>>(tee-i更新_logfile.txt)
执行2>&1
今天=“$(日期+'%d%m%Y')”
printf“记录加载已开始:%s\n”“$today”
echo“获取记录”
wget-N ftp://[user1]:[pass1]@[ftp-server-1]/*.-P/path/to/temp/
回音“放置记录”
wput--basename=/path/to/temp/-u/path/to/temp/*.*ftp://[user2]:[pass2]@[ftp-server-2]/update/
echo“上传完成”
邮件-s“上传”我的_email@domain.com
Joesch-简单的方法是将带有上次下载时间戳的lastCheck写入文件,并根据要上载的文件的上次修改时间戳进行检查。如果文件比时间戳更新,请上传它。这应该是相当简单的事情,但请随时让我知道,我可以为你们把片段放在一起

嗨,阿莫尔,我不太明白。你介意给我举个例子吗?我对shell脚本编写不是很有经验。Joesch-我在旅行和打手机。我无法给出代码片段(尽管我很想:)。我将遵循以下步骤-1。下载文件时,编写一个带有时间戳的临时文件。2.上载文件时,请查看文件名和时间戳,以查看这是否是已修改的文件。这样可以避免上载的文件重复。我很抱歉回答的格式,但我希望这有帮助。