Автоматизация синхронизации папок FTP с WinSCP
Я успешно выполнил такие задачи, используя потрясающий и очень классный продукт WinSCP . Я также предоставил вам образец Batch Script, чтобы помочь настроить такую задачу для автоматизации и, таким образом, дать вам довольно полный и полный ответ, чтобы помочь удовлетворить ваши потребности.
По сути вы будете:
- Определите FTP-соединение в графическом интерфейсе WinSCP
- Сохраните определенное FTP-соединение и дайте ему имя, которое указывает, к чему оно относится
Используйте имя соединения FTP в скрипте, чтобы открыть соединение для команд FTP - см. Раздел « Пакетный скрипт »
Пакетный скрипт
В приведенном ниже пакетном скрипте вы захотите убедиться, что эти переменные установлены с правильными значениями: localdir
, remotedir
, winscplogin
и logfile , поэтому убедитесь, что они установлены для указания правильных папок, определенного FTP-соединения WinSCP и logfile
журнала - остальное должно просто работать как есть.
@ECHO ON
:SetFileLogVariables
SET localdir=C:\dev\site123
SET remotedir="dev\site123"
SET logfile=C:\logs\FTP_dev_site123_sync.log
:SetPrgVariables
SET prgwinscp="C:\Program Files\WinSCP3\WinSCP.com"
SET winscplogin="DevSiteSync"
SET winscpfile=%temp%\~tmpWinSCPFTPSyncT_%~N0.txt
IF EXIST "%winscpfile%" DEL /Q /F "%winscpfile%"
:SetWinSCPSyncCommand
SET ftpcmd=synchronize remote "%localdir%\"
:ftpout
ECHO. >> %logfile%
ECHO *************************** FTP OUT *************************** >> %logfile%
ECHO Synchronizing files to %winscplogin% server on %date% at %time% >> %logfile%
ECHO option batch on >> %winscpfile%
ECHO option confirm off >> %winscpfile%
ECHO option transfer binary >> %winscpfile%
ECHO open %winscplogin% >> %winscpfile%
ECHO cd %remotedir% >> %winscpfile%
ECHO %ftpcmd% >> %winscpfile%
ECHO close >> %winscpfile%
ECHO exit >> %winscpfile%
ECHO %winscpfile% >> %logfile%
TYPE %winscpfile% >> %logfile%
ECHO ------------------------------------------- >> %logfile%
%prgwinscp% /script=%winscpfile% >> %logfile%
ECHO ------------------------------------------- >> %logfile%
IF EXIST "%winscpfile%" DEL /Q /F "%winscpfile%"
ECHO Transmission complete on %date% at %time% >> %logfile%
EXIT
Примечание к конфигурации соединения WinSCP
Вы, вероятно, захотите сообщить определенному WinSCP FTP-соединению НЕ запоминать последний использованный каталог, так как скрипт явно перейдет в папку.
Вы завершаете это, выделяя определенное имя FTP-соединения в WinSCP GUI и затем выбираете Edit | Расширенный | Справочники | снимите флажок Запомнить последний использованный каталог | Хорошо | Сохранить
Синтаксис
synchronize local|remote|both [ <local directory> [ <remote directory> ] ]
замечания
Когда первый параметр является local
, изменения из удаленного каталога применяются к локальному каталогу. Когда первый параметр является remote
, изменения из локального каталога применяются к удаленному каталогу.
Когда первым параметром является both
локальный, так и удаленный каталоги, можно изменить.
Если каталоги не указаны, текущие рабочие каталоги синхронизируются.
Примечание. Подтверждение перезаписи для команды всегда отключено.
Переключатели:
источник
Дополнительные ресурсы