Пишу скрипт для синхронизации двух папок. Я выбираю изображения из локальной папки и синхронизирую их по FTP.
Я должен применить ТРИ фильтра:
только файлы изображений (ЭТО РАБОТАЕТ: *.jpg; *.png...
)
только новые файлы (ЭТО РАБОТАЕТ: *.png>=%2019-04-10#yyyy-mm-dd%
)
Я не хочу копировать папки (не работает)
Код, который я использую, работает, но он также копирует подпапки. В Интернете говорят, что я должен использовать "|*/"
, чтобы пропустить подпапки. Но если я использую это в своей файловой маске, она копирует ВСЕ, игнорируя другие мои фильтры.
Это код, который я использую:
Здесь я подключаюсь к SFTP-серверу, используя пароль
open sftp://USERNAME:[email protected] -hostkey = "ssh-rsa 4096 JvxxxxxxxxxxxxxxxxxxVx8/5VSw = "
option batch
option transfer binary
Вот синхронизирую:
synchronize remote -filemask = "*.png>=%2019-04-10#yyyy-mm-dd%; *.jpeg>=%2019-04-10#yyyy-mm-dd%; *.jpg>=%2019-04-10#yyyy-mm-dd%;" H:\MyImageFolder /test/DestinationFolder/ -nopreservetime
Я пробовал это:
synchronize remote -filemask = "*.png>=%2019-04-10#yyyy-mm-dd%; *.jpeg>=%2019-04-10#yyyy-mm-dd%; *.jpg>=%2019-04-10#yyyy-mm-dd%; "|*/" " H:\MyImageFolder /test/DestinationFolder/ -nopreservetime
Но это не работает или мне говорит, что у файловой маски неправильное количество параметров.
Как я могу использовать свой фильтр изображений (на основе расширения и даты) и исключить подпапки из синхронизации?
Я нашел другие вопросы о переполнении, но ни один из них не соответствовал моей конкретной проблеме.
%2019-04-10#yyyy-mm-dd%
неправильно, должно быть просто 2019-04-10
."|*/"
.См. документацию для Маски файлов WinSCP.
Это должно делать то, что вы хотите:
-filemask = "*.png>=2019-04-10; *.jpeg>=2019-04-10; *.jpg>=2019-04-10 | */"