¿Por qué no funciona sftp rmdir?

18

Estoy tratando de eliminar un directorio con muchos archivos y carpetas del espacio de mi servidor privado. Estoy iniciando sesión a través de SFTP bien; Puedo acceder a todo el directorio sin problemas; Incluso puedo eliminar archivos individuales con rm. Pero esto me llevaría una eternidad, así que realmente me gustaría hacer rmdir en la carpeta más alta que quiero eliminar. Pero cuando hago esto, me sale

No se pudo eliminar el directorio: error

¿Alguna idea de lo que podría estar haciendo mal?

Muchas gracias Sam

usuario1451632
fuente
Si puede SFTP en ese servidor, ¿puede SSH? Si es así, puede usar una versión más potente del comando RM: rm -rf foo / *
Chris

Respuestas:

21

En mi experiencia, rmdir prefiere trabajar en un directorio vacío. Si intenta eliminar el directorio foo, yo haría:

$rm foo/*
$rmdir foo
Chris
fuente
2
Editado porque el indicador -rf no existe para rm en sftp.
Chris
1
SSH'ing hacer rm -rf fue la respuesta obvia. Intenté rm -rf en SFTP pero no pudo aceptar -rf, como usted señaló. (El truco comodín en SFTP tampoco funcionó). De todos modos, ¡muchas gracias por su ayuda!
user1451632
Eso es gracioso. rm foo / * trabajó para mí en SFTP. De todos modos, ¡me alegra que lo hayas resuelto!
Chris
Aún así, no elimina directorios de forma recursiva. Ya es lo suficientemente bueno, pero aún no es perfecto :-)
Krzysztof Jabłoński
Tuve el mismo problema y rm foo/*no funcionaba porque foo/contenía directorios no vacíos. Afortunadamente también rsyncse permitió y creé un directorio vacío localmente y luego rsync -rv --delete empty_local_dir/ host.example.org:/foo/lo eliminé todo debajo del foo/directorio remoto . Posteriormente fue posible rmdir foovía SFTP.
ckujau
5

No ha especificado qué cliente SFTP está utilizando. Entonces supongo que OpenSSH SFTP ( sftp).

El comando rmdiren el cliente OpenSSH SFTP se asigna directamente a la SSH_FXP_RMDIRsolicitud del protocolo SFTP. La especificación SFTP para la versión 3 (la utilizada por OpenSSH) menciona específicamente que la SSH_FXP_RMDIRoperación puede fallar, "si el directorio especificado no está vacío" (aunque no parece obligarlo).

Si el directorio no tiene subdirectorios, puede usar rm foo/*(es decir, el comando SFTP de OpenSSH, no el comando de shell) para eliminar primero todos los archivos del directorio. Y luego usar rmdir.

Martin Prikryl
fuente
1
Una pregunta clásica es: ¿Cómo te va rm -r *con SFTP? No creo que sea posible.
Jari Turkia
2
@JariTurkia No es posible con sftp(cliente de línea de comandos OpenSSH). Es posible con SFTP (protocolo), si tiene un cliente lo suficientemente inteligente.
Martin Prikryl
Agradecería cualquier sugerencia para un cliente SFTP lo suficientemente inteligente. Hay un cuadro en particular, que necesito jugar regularmente y está restringido a SFTP por razones de seguridad. Obviamente, cuando se hace algo, se vuelve muy doloroso, dado el conjunto limitado de comandos que ofrece el cliente SFTP de OpenSSH.
Jari Turkia
Haga una pregunta sobre su problema específico ( "Cómo eliminar recursivamente la carpeta usando SFTP" ) - Asegúrese de especificar su plataforma.
Martin Prikryl