у меня есть большой набор файлов в хосте B, и я пробую к mget эти файлы от оболочки хоста (разместите A, предоставляет доступ оболочки, в то время как хост B не делает, но предоставляет доступ ftp). Посреди задания было потеряно соединение, и только половина количества файлов в хосте B были переданы для хостинга A. Я пытаюсь возобновить mget, не перезаписывая уже переданные файлы в хосте A, но фигура наклона, как сделать это. Какие-либо парни идеи?
PS: mreget не доступен в хосте оболочка A
Более универсальный подход должен был бы получить информацию о том, что находится на 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 были бы определены для указания на файлы.
У меня действительно нет ресурсов или время для создания этого точным, но надо надеяться Вы получаете идею.