Нашим клиентам необходимо передать указанные файлы из своей сети в нашу через FTP. Передача должна запускаться автоматически при изменении одного из указанных файлов. Для этого идеально подходит RoboCopy. Однако RoboCopy не поддерживает передачу на адреса FTP. Итак, я хотел бы сопоставить наш FTP-сайт с буквой диска на клиентском сервере. я нашел это FtpUse идеально подходит для сопоставления FTP с буквой диска. Сопоставление работает должным образом, и я могу видеть содержимое FTP-сайта в проводнике Windows - я также могу записывать данные на подключенный FTP-диск.
Итак, допустим, я сопоставил FTP-сайт с диском Q на моем локальном компьютере с помощью этой команды:
ftpuse Q: [ftp address] [password] /USER:[username]
И попробуйте настроить RoboCopy с помощью этой команды:
robocopy [source dir] Q:\ *.xls *.xlsx /COPY:DAT /LOG+:"[LogDir]\FtpCopyLog.txt" /V /NP /MON:1 /MOT:1 /R:10 /W:30
Когда RoboCopy запускается, он выдает следующее сообщение об ошибке:
ОШИБКА 87 (0x00000057) Копирование файла [исходный каталог] \ test2.xlsm Параметр неверен
Я попытался подключить диск и запустить команду RoboCopy под учетной записью пользователя samme, но, похоже, это не решило проблему.
Надеюсь, кто-то может помочь.
Любая помощь будет принята с благодарностью.
Попробуйте использовать WinSCP в зеркальном режиме. WinSCP можно скачать отсюда:
http://winscp.net/eng/download.php
Используя WinSCP, вам не нужно подключать диск, он просто подключается к FTP напрямую и выполняет всю работу за вас.
Вот небольшой сценарий BAT, который делает это похожим на ROBOCOPY.
ВНИМАНИЕ: я добавил параметр -delete, который удаляет удаленные файлы, которые больше не соответствуют локальной папке. Двойные кавычки необходимы, потому что в локальном пути есть пробелы.
set FTPSERVER=v2008
set FTPUSER=username
set FTPPASS=password
set FTPLOCALE=C:\Users\User\Desktop\Local folder
set FTPREMOTO=/public
winscp.com /command "open ftp://%FTPUSER%:%FTPPASS%@%FTPSERVER%/" ^
"synchronize remote -delete ""%FTPLOCALE%"" %FTPREMOTO%"
Поскольку вы уже используете Windows, почему бы не использовать для этого Power Shell? Вы можете указать только новые файлы и запланировать задачу с помощью планировщика задач Windows со встроенными инструментами Windows. Не нужно платить за встроенный функционал. Я предполагаю, что вы используете небезопасное FTP-соединение. Несколько быстрых сценариев дадут вам очень гибкое дешевое решение. У меня есть несколько сценариев Power Shell, которые извлекают и отправляют файлы FTP на основе определенных критериев.
Когда копия выполняется, у вас есть разрешение на создание файлов, но не на их перезапись. Насколько велики файлы? Насколько я понимаю, каждый раз, когда файл редактируется, файл полностью копируется снова, и вы перезаписываете старый файл новой версией. Нет возможности оценить, что изменилось в файле, и просто добавить новые данные? Поскольку вы не пытаетесь добавить данные, а используемые вами инструменты не позволяют перезаписывать файл, теоретически вы можете написать какой-то промежуточный скрипт, который удаляет устаревшие файлы, когда они обнаруживаются непосредственно перед копированием нового файла на место. Это звучит как неуклюжее решение, но все это также звучит как неуклюжий процесс. Лично я бы переоценил, какова здесь цель и тому подобное, но я стараюсь просто отвечать на вопрос. Удачи!