C удалить файл ftp

Обновлено: 04.07.2024

На данный момент я использую FileZilla для FTP на мой сайт. Иногда я хочу удалить большой каталог, полный множества других подкаталогов и файлов. Filezilla, кажется, проходит их все индивидуально, а это значит, что для удаления требуется абсолютный возраст!

Есть ли способ сделать это быстро / э?

«Быстро» и «Удаление большого количества файлов» - две вещи, которые плохо сочетаются при использовании клиента FTP / SFTP для удаления большого количества файлов в глубокой структуре каталогов. Любой, кто должен поддерживать веб-сайт Magento для электронной коммерции, может подтвердить это.

Я считаю, что FTP фактически не имеет рекурсивной операции удаления. Возможные варианты:

  1. Используйте ncftp программу. Это еще одна FTP-программа с дополнительными опциями. Тем не менее, я думаю, что он работает только в командной строке и не имеет графического интерфейса.
  2. Если у вас есть SSH доступ к серверу, используйте его вместо FTP и используйте rm -r команду.
  3. Напишите PHP или другой скрипт для удаления за вас.
ncftp - это просто еще один FTP-клиент. Он по-прежнему не сможет рекурсивно удалять подкаталоги одной командой и в большинстве случаев будет делать то, что делает FileZilla. Вы можете выполнить команду через FileZilla, в зависимости от вашего логина.

Вы можете быстро удалить каталог или файлы с FTP с помощью проводника Windows.

введите описание изображения здесь

Этот метод занимает столько же времени, сколько и ftp !!

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

Создайте каталог с именем «мусор» в корневой папке, затем перетащите / переместите (переименуйте) все каталоги, от которых вы хотите избавиться. Выполнение этого происходит мгновенно, поэтому вы можете продолжить работу, а в фоновом режиме разрешить установку ручного удаления.

чит: используйте winscp в режиме ftp. он преобразует простой запрос и выполнит все необходимые задачи. это не «командная строка» ftp, но она все равно ftp и может использоваться с теми же учетными данными ftp для легкого выполнения задачи (и настолько быстро, насколько это может выполнить ftp)

Часто требуется автоматизировать процессы скачивания, загрузки и удаления файлов c FTP-сервера. Например, при работе с распределенными базами данных 1С или для сохранения резервных копий. Но не все знают, что эти процедуры можно выполнять из командной строки, не прибегая к дополнительному программному обеспечению, то есть средствам Windows. Ниже я приведу синтаксис команд для работы с FTP, а также примеры bat-файлов для этих операций.

1. Команда ftp

Для обмена файлами с FTP-сервером используется команда ftp, вот ее синтаксис:

FTP [-v] [-d] [-i] [-n] [-g] [-s:имя_файла] [-a] [-A] [-x:sendbuffer]
[-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [узел]

Как видно, здесь нет операторов для подключения к серверу и работы с файлами. Дело в том, что эта команда только запускает сеанс ftp:

komanda_ftp_01

Далее, работа с FTP-сервером происходит уже при помощи следующих операторов (пропустить) :

!
Временный переход в оболочку.

append
Добавление в файл.

ascii
Установка режима передачи файлов в формате ascii.

bell
Выдача звукового сигнала по завершении команды

binary
Установка режима передачи файлов в двоичном формате.

bye
Завершение сеанса ftp и выход.

close
Завершение сеанса ftp.

debug
Переключение режима отладки.

disconnect
Завершение сеанса ftp.

glob
Переключение метасимвольного расширения имен локальных файлов.

prompt
Переключение интерактивной подсказки для составных команд.

pwd
Вывод рабочего каталога удаленного компьютера.

quit
Завершение сеанса ftp и выход в командную строку.

status
Отражение текущего состояния подключения ftp.

trace
Переключение трассировки пакетов.


Рассмотрим небольшой пример.

komanda_ftp_02

Для этого необходимо выполнить следующий набор команд:

В итоге получим требуемый результат:

komanda_ftp_03

komanda_ftp_04

komanda_ftp_05

2. Пример bat-файла для загрузки файла на FTP

  • Создаем файл transport.txt с последовательностью операторов ftp;
  • Выполняем команду ftp, указав в качестве параметров созданный файл;
  • Удаляем transport.txt.

komanda_ftp_06

В данном примере имя файла и директорий жестко прописаны в файле. Это не всегда удобно. Доработаем bat-файл таким образом, чтобы данные для загрузки он получал в качестве параметров, а также вынесем все изменяемые значения в переменные файла. Получим следующий код (скачать файл):

komanda_ftp_07

komanda_ftp_08

Аналогичным образом можно написать bat-файлы для получения файлов и удаления файлов на FTP-сервере, а также исполняющий файл с произвольным набором инструкций.

Смотрите также:

Не все знают, что можно создать прямую ссылку на файл, хранимый на FTP-Сервере, "зашив" в нее логин и пароль. Также возможно создать ярлык на какую-либо директорию или даже подключить ее…

Может случиться так, что в процессе установки MS SQL Server 2012 были установлены компоненты, необходимость в которых со временем отпала (или были установлены по ошибке). В этом случае, в целях…

FTP-Сервер обеспечивает возможность передачи файлов между клиентом и сервером с помощью протокола FTP. Здесь будет рассказано как запустить FTP-сервер в Windows Server 2008 R2. 0. Оглавление Добавление службы FTP-сервер Добавление…

В ходе расследования по поводу того, что WordPress генерирует слишком большое количество различных thumbnail(уменьшенных изображений) для каждого изображения, которое вы загружаете на сервер, через интерфейс данной CMS. Так вот эти самые уменьшенные изображения, который как правило вообще не используются в работе вашего сайта, просто занимают место на вашем сервере. В ходе очередной ревизии по настройка CMS и отдельных плагинов для того чтобы они перестали генерировать этот ненужный бред(будет отдельная статья), я решил что пора весь этот мусор вычистить из сервера и освободить его немного. Но для удаления файлов по FTP вручную, особенно если считать что изображений там у меня набралось over 40 тысяч, ушло бы очень много времени и сил. Но благо мы умеем программировать!

Удаляем файлы с FTP сервера

Подцепив их, желательно открыть новый класс, где будут хранится данные для подключения к Вашему FTP-серверу:

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

Далее немного объясню код работы. В первых строчках идет само подключение к FTP серверу и там вам не придется что-либо менять. Начать редактировать нужно с пути на сервере, где лежат ваши изображения. По умолчанию я поставил путь, по которому обычно и хранятся изображения в WordPress.

Так же в коде имеется незначительная переменная count(которую можете вовсе убрать). Её я использовал для тестирования программки(удаляет не удаляет?), которая служит неким ограничителем.

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

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

string pat1 = @"(.*?)-(\d\d)x(\d\d).(.*?)";
Regex regex1 = new Regex(pat1);
Match match1 = regex1.Match(i.Name);
while (match1.Success)
count++;
client.DeleteFile(MainParams.FtpTimeout * 1000, path + i.Name);
match1 = match1.NextMatch();
>

if (count > 1000)
break;
>
MessageBox.Show("все " +Convert.ToString(count));
>
catch (Exception ex)
MessageBox.Show("Ошибка: " + ex.Message);
>
>
[/csharp]

Если кратко по коду, то метод находит все уменьшенные изображения в размере вида YYxYY и YYYxYYY(пишу и понимаю что можно еще ввести размеры YYYxYY) и удаляет их. Лично для себя я оставил уменьшенные изображения размера 150х150, которые используются одним из плагинов.

Читайте также: