Одна из моих установок WordPress была недавно перенесена, и я пытаюсь удалить каталог старой, но удаление заняло более 15 минут. Похоже, что он удаляет каждый отдельный файл. Это нормально? Может ли он просто удалить папку и запустить ее в фоновом режиме? Для сравнения, на Mac (Unix) это занимает полсекунды.

3 ответа3

2

Обычно, если у вас есть доступ по sftp, у вас также есть доступ по ssh, и вы можете выполнять удаленные команды, используя это. Таким образом, чтобы рекурсивно удалить структуру каталогов, вы должны использовать параметр -r для команды rm. т.е.

ssh user@hostname.com "rm -rf /home/user/directory" 

Будьте очень осторожны с этой командой и убедитесь, что каталог, который вы удаляете, на 100% является правильным. Вы также можете перечислить содержимое каталога, чтобы быть уверенным, делая это.

ssh user@hostname.com "ls /home/user/directory" 
2

Может ли он просто удалить папку и запустить ее в фоновом режиме? Для сравнения, на Mac (Unix) это занимает полсекунды.

Это не только проблема SFTP, но и нелокальная (ака: сетевая) проблема файловой системы. Когда вы на своем Mac или любой другой ОС; только непосредственно в системе - у вас есть прямой доступ к вашей файловой системе. А поскольку файловая система действительно упрощает ее, но для ясности, это просто небольшая база данных / индекс с указателями расположения файлов / каталогов. Итак, что происходит, когда вы удаляете файл или каталог локально, так это то, что к базе данных / индексному файлу локальной файловой системы применяются довольно быстро, поскольку она, конечно, локальна.

Напротив, при удаленном доступе к файловой системе через сетевой протокол, такой как SFTP, у вас нет прямого доступа к файловой системе. Поэтому, если вам нужно удалить каждый файл / каталог через сетевое соединение, сначала сетевое соединение должно получить список файлов / каталогов из удаленной файловой системы. И когда программа получает этот список, она запускает удаленное действие для удаления файла. Этот метод довольно неэффективен, и поэтому всегда предпочтительнее иметь прямой доступ к файловой системе.

Тем не менее, если у вас есть учетная запись SFTP, у вас также должен быть доступ по SSH, поскольку SFTP-соединение обычно просто управляется как подсистема SSH. Поэтому, если вы сходите с ума в ожидании файлов / каталогов, просто удалите логин через SSH и выполните команду rm -rf для указанных файлов / каталогов.

1

Безопасный протокол передачи файлов не обеспечивает прямой доступ к API операционной системы.

Это в значительной степени означает нет.

Удаление через SSH может быть быстрее, если у вас есть доступ к оболочке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .