Удаление всего содержимого из каталога SFTP с помощью Chilkat

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

В настоящее время он говорит, что каталог должен быть пустым для удаления, поэтому мне пришлось включить метод syncTreeDownload, использующий режим 99, и синхронизировать его с пустым каталогом на моем локальном компьютере.

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

Кто-нибудь сталкивался с этой ситуацией ранее и имеет легкое решение для ее решения? Должен быть простой способ добиться этого.


person srozzar    schedule 13.01.2020    source источник
comment
Не могли бы вы сделать для этой цели пустую папку? Создание временных папок.   -  person Andrew Morton    schedule 13.01.2020
comment
спасибо @AndrewMorton, реализовали это! совершенно забыл, что это возможно ... все-таки утро понедельника!   -  person srozzar    schedule 13.01.2020


Ответы (1)


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

Как сложно? Для разработки? Или потому что это занимает много времени? Нет другого пути с протоколом SFTP.


Это не совсем идеальное решение, поскольку оно будет развернуто, и поэтому я не смогу найти пустой каталог для синхронизации на клиентских машинах.

Вы можете создать новую временную подпапку в %TEMP% (Path.GetTempPath < / а>).


Если у вас есть доступ к оболочке (в дополнение к SFTP), вы можете выполнить команду оболочки rm -rf на сервере (или эквивалентную, если вы не подключаетесь к серверу * nix) - например, используя метод Ssh.QuickCommand. Это быстрое и простое (и грязное) решение.

person Martin Prikryl    schedule 13.01.2020
comment
Это была моя первоначальная мысль, если бы я был на терминале, я мог бы просто рекурсивно удалить каталог, поэтому я подумал, может быть, в библиотеке есть аналогичная операция. спасибо за временную идею, что мне нужно, спасибо ..! думаю, я постараюсь улучшить свою способность к рекурсивному циклу ...! - person srozzar; 13.01.2020
comment
Я имею в виду, что вы можете выполнить команду оболочки rm с помощью библиотеки. Например. используя метод QuickCommand. - Хотя рекурсивный код с использованием SFTP был бы более надежным (но более сложным и медленным) решением. - person Martin Prikryl; 13.01.2020
comment
я думаю, это то, что я должен взвесить! поиграю и посмотрим, какой из них лучше подходит для того, что мне нужно, еще раз спасибо за ваш вклад, цените это! - person srozzar; 13.01.2020