Я пытаюсь удалить каталог с большим количеством файлов и папок из личного пространства сервера. Я вхожу в систему через SFTP нормально; Я могу получить доступ ко всему каталогу без проблем; Я даже могу удалить отдельные файлы с помощью команды rm. Но это заняло бы у меня целую вечность - поэтому я действительно хотел бы просто выполнить rmdir для самой высокой папки, которую я хочу удалить. Но когда я делаю это, я получаю
Не удалось удалить каталог: сбой
Есть мысли о том, что я могу делать не так?
Большое спасибо, Сэм
Ответы:
По моему опыту, rmdir предпочитает работать с пустым каталогом. Если вы пытаетесь удалить каталог
foo
, я бы сделал:источник
rm foo/*
не работал, потому чтоfoo/
содержал непустые каталоги. К счастью,rsync
это тоже было разрешено, и я создал пустой каталог локально, а затем использовалrsync -rv --delete empty_local_dir/ host.example.org:/foo/
для удаления все, что находится под удаленнымfoo/
каталогом. После этого стало возможнымrmdir foo
через SFTP.Вы не указали, каким SFTP-клиентом вы пользуетесь. Итак, я предполагаю, что OpenSSH SFTP (
sftp
).Команда
rmdir
в SFTP-клиенте OpenSSH сопоставляется напрямую сSSH_FXP_RMDIR
запросом протокола SFTP. Спецификация SFTP для версии 3 (используемой OpenSSH), в частности, упоминает, чтоSSH_FXP_RMDIR
операция может завершиться неудачей, «если указанный каталог не пустой» (хотя, похоже, он этого не требует).Если в каталоге нет подкаталогов, вы можете использовать
rm foo/*
(то есть команду OpenSSH SFTP, а не команду оболочки), чтобы сначала удалить все файлы в каталоге. А потом пользуйсяrmdir
.источник
rm -r *
с SFTP. Я не думаю, что это возможно.sftp
(клиент командной строки OpenSSH). Это возможно с SFTP (протокол), если у вас достаточно умный клиент.