возобновление mget в оболочке

у меня есть большой набор файлов в хосте B, и я пробую к mget эти файлы от оболочки хоста (разместите A, предоставляет доступ оболочки, в то время как хост B не делает, но предоставляет доступ ftp). Посреди задания было потеряно соединение, и только половина количества файлов в хосте B были переданы для хостинга A. Я пытаюсь возобновить mget, не перезаписывая уже переданные файлы в хосте A, но фигура наклона, как сделать это. Какие-либо парни идеи?

PS: mreget не доступен в хосте оболочка A

0
задан 16.02.2011, 14:16

1 ответ

Более универсальный подход должен был бы получить информацию о том, что находится на B, подтвердите, что они все добрались до A, или продолжайте повторно связывать, пока Вы не получаете их всех.

что-то как

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

где mgetTargets и locaDirOutput были бы определены для указания на файлы.

У меня действительно нет ресурсов или время для создания этого точным, но надо надеяться Вы получаете идею.

0
ответ дан 27.11.2019, 18:20

Теги

Похожие вопросы