resumindo o mget no shell

0

Eu tenho um grande conjunto de arquivos no host B e estou tentando mesclar esses arquivos do shell do host A (o host A permite acesso ao shell enquanto o host B não fornece acesso ftp). No meio do trabalho, a conexão foi perdida e apenas metade do número de arquivos no host B foi transferido para o host A. Estou tentando retomar o mget sem sobrescrever os arquivos já transferidos no host A, mas não consigo descobrir como fazer isto. Alguma idéia pessoal?

PS: o mreget não está disponível no shell do host A

    
por anp 16.02.2011 / 13:16

1 resposta

0

Uma abordagem mais genérica seria capturar informações sobre o que está em B, confirmar que todos chegaram a A ou continuar tentando até conseguir todas.

algo como

until ${allFilesTransfered:-false} ; do
    # get in file list of remote Files
ftp -in  > ${mgetTargets} <<-EOS
    open ${RemoteHost}
    $passwd
    cd $remoteDir
    ls ${fileSpec}*
    quit
    EOS

    # transport files with mget
    ftp -in <<-EOS
    open ${RemoteHost}
    $passwd
    prompt
    binary
    cd $remoteDir
    lcd $localDir
    mget $( cat mgetTargets )
    quit
    EOS

    # make a tmp file with files that are
    # now on your local machine
    cd $localDir
    ls -l > ${localDirOutput)

    # compare the 2 lists with diff,
    # if not diffs, then all files were copied
    diffOut="$(diff - ${localDirOutput} ${mgetTargets})"
case "${diffOut:-no_outputFound}" in
   no_outputFound ) allFilesTransfered=true ;;
esac
done

onde mgetTargets e locaDirOutput seriam definidos para apontar para arquivos.

Eu realmente não tenho recursos ou tempo para fazer isso com exatidão, mas espero que você tenha a idéia.

    
por 21.02.2011 / 01:16

Tags