WinSCP удаляет исходные файлы в определенных папках старше определенной даты, после успешной синхронизации каталога - PullRequest
0 голосов
/ 02 января 2019

У меня есть пакетный файл, который синхронизирует определенную папку с помощью WinSCP.

"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
  /log="C:\Scripts\Logs\- Server Data - Backup !M-!D-!Y.log" ^
  /command ^
    "open ""sftp://xxx/Archive/Server Data/"" " ^
    "synchronize remote ""C:\xxx\- Server Data -\"" " ^
    "exit"

Суть в том, чтобы архивировать данные на SFTP-сервере Synology NAS.Это хорошо работает.

Я также хочу удалить файлы в определенных подкаталогах источника, срок действия которых превышает определенную дату, например, 30 дней, но я хочу быть абсолютно уверен, что они были успешно заархивированына SFTP-сервер.

У меня есть пакетный файл, который удаляет файлы журнала старше 30 дней, но я не думаю, что это безопасный способ удаления важных файлов.Синхронизация могла бы гипотетически прекратить работу на 30 дней, если бы я не заметил, а затем я бы, например, облажался.

ForFiles /p "C:\Scripts\Logs" /s /d -30 /c "cmd /c del @file"

Также было бы хорошо, если бы указанные подкаталоги можно было легко редактировать, чтобыЯ могу просто добавить или удалить из списка.Так что какой-то цикл, я полагаю, был бы хорош.

Какой лучший способ сделать это?

1 Ответ

0 голосов
/ 03 января 2019

Вы можете проверить код завершения WinSCP , чтобы убедиться, что синхронизация прошла успешно, прежде чем начинать удалять файлы:

"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
  /log="C:\Scripts\Logs\- Server Data - Backup !M-!D-!Y.log" ^
  /command ^
    "open ""sftp://xxx/Archive/Server Data/"" " ^
    "synchronize remote ""C:\xxx\- Server Data -\"" " ^
    "exit"

if not errrolevel 1 (
    ForFiles /p "C:\Scripts\Logs" /s /d -30 /c "cmd /c del @file"
)

См. FAQ по WinSCP Как узнать, чтоСценарий успешно завершен?


Для более надежного решения следует использовать более мощный язык, например PowerShell в сочетании со сборкой WinSCP .NET .

Вы можете начать с этого примера, в котором есть все ключевые элементы, которые вам нужны (итерация локальных файлов и проверка их существования удаленно):
Рекурсивное перемещение файлов в дереве каталогов на сервер SFTP при сохранении структуры исходного каталога .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...