Como posso obter os arquivos mais recentes de um servidor Unix para outro servidor Unix?

1

Como posso obter apenas os arquivos mais recentes de um servidor Unix para outro servidor Unix?

Eu me conectei via SFTP ao servidor 2 e tentei aplicar um loop for para verificar o registro de data e hora, o que não está funcionando:

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
    
por Maddy 13.12.2012 / 14:58

2 respostas

1

Você já tentou rsync ?

rsync is an open source utility that provides fast incremental file transfer.

Ele só transferirá arquivos alterados / novos e somente deltas para arquivos alterados. Ele também tem vários outros recursos interessantes .

Isso não resolve nenhum problema com seu código, mas acho que o rsync será mais fácil do que tentar reinventar a roda com SFTP.

    
por 13.12.2012 / 15:14
0

Rsync (ou Unison) é melhor

Outra solução seria usar find

 find . -name 'mad_*' -newer last_update -exec sftp ... {} \;
 touch last_update
    
por 13.12.2012 / 16:36

Tags