PDA

Показать полную графическую версию : Копирование по FTP


SenatoR_Dmr
28-09-2016, 18:33
Доброго времени суток.
Есть код:
@echo off
::Задаем параметры подключения
set host=
set user=
set password=
set FTPfolder=/%date:~6%-%date:~3,2%-%date:~0,2%
set fileMask=*
set LocalFolder=\\comp\share
set backuplog=\\comp\share\backuplog.txt
set msgfile=\\comp\share\msgfile.txt

::Создаем временный файл команд для утилиты FTP.exe и папку с архивами
md %LocalFolder%
set BackupFTP="%temp%\FTP_Backup.txt"

::Генерируем файл FTP команд
> %BackupFTP% (
echo open %host%
echo %user%
echo %password%
echo binary
echo prompt
echo lcd %LocalFolder%
echo cd %FTPfolder%
echo mget %fileMask%
echo disconnect
echo quit
)

::Добавляем утилиту FTP в исключения брандмауера Windows
netsh advfirewall firewall add rule name="FTP" dir=in action=allow program="%windir%\system32\ftp.exe" enable=yes

::Запускаем на выполнение пакетник команд FTP и записываем предварительный лог
ftp.exe -s:%BackupFTP%
Он тягает с FTP один большой файл. Если интернет пропадает, батник зависает. Никакой ошибки не выдает, при стабилизации работы интернета закачка не продолжается, батник все также висит.

Как восстанавливать соединение с FTP после потери соединения? Или как сделать, чтобы выдавалась ошибка при потере соединения?

greg zakharov
28-09-2016, 22:11
SenatoR_Dmr, ftp.exe в винде довольно уежищная штука, лучше воспользоваться ее продвинутыми аналогами от сторонних разработчиков, либо использовать PowerShell, в котором можно реализовать различные свистоперделки вроде индикатора процесса загрузки файла и сообщений о потере соединения с сервером.

Elven
29-09-2016, 14:19
Через виндовый FTP это действительно проблема. У себя похожую проблему я решил перейдя на robocopy. Если же важно сделать именно через FTP, можно попробовать мониторить изменение файла в папке, если он перестал изменяться - грохнуть FTP и копировать заново.

lxa85
29-09-2016, 16:03
SenatoR_Dmr, я бы предложил использовать wget аналог под Windows.
у него есть ключи -n для продолжения загрузки.
И у него должен быть более информативный вывод.

greg zakharov
29-09-2016, 17:06
lxa85, да хоть curl'ом - сути дела не изменит: ftp.exe использовать не стоит.




© OSzone.net 2001-2012