如何将最新文件从一台 Unix 服务器传输到另一台 Unix 服务器?

如何将最新文件从一台 Unix 服务器传输到另一台 Unix 服务器?

如何才能将最新的文件从一台 Unix 服务器传输到另一台 Unix 服务器?

我已经通过 SFTP 连接到服务器 2,并尝试应用 for 循环来检查时间戳,但这不起作用:

sftp $SERVER2  << !EOF
cd $Server2_FILE_LOCATION
echo Pwd File location: $pwd

LastUpdatedTS=$(grep "value of TimeStamp is" /root/airtelSnD/BoTreeScript/BotreeLastFileTS.txt | cut -d'=' -f2)

echo 1

for file in mad_*.*
do
CurrentFileTS=$(stat -c %Y $file |awk '{print  strftime( "%Y%m%d%H%M%S", $1 )}')

echo 2

echo TS of last updated file is : $LastUpdatedTS
echo value CurrentFileTS is $CurrentFileTS

echo 3

if [[ $CurrentFileTS -gt $LastUpdatedTS ]]
 then
    echo if......
    mget  $file $DESTINATION_SERVER
    echo value of TimeStamp is=$CurrentFileTS > $LASTFILE_TS    
else
    echo else...       
 fi
done

quit
!EOF

答案1

你有没有尝试过同步

rsync 是一个提供快速增量文件传输的开源实用程序。

它只会传输已更改/新的文件,并且只会传输已更改文件的增量。它还具有其他各种漂亮的功能

这实际上并没有解决您的代码的任何问题,但我认为 rsync 比尝试使用 SFTP 重新发明轮子更容易。

答案2

Rsync(或 Unison)是最好的

另一个解决方案是使用find

 find . -name 'mad_*' -newer last_update -exec sftp ... {} \;
 touch last_update

相关内容