¿Hay otros comandos como scp pero para eliminar archivos y carpetas?

13

Estoy usando scp para copiar cosas a una ubicación remota. Pero a veces scp no funciona como se esperaba, he descubierto que a veces la copia no se completa correctamente (posiblemente cuando agregué nuevos archivos a la carpeta que estoy copiando).

Entonces, primero quiero eliminar la carpeta remota y luego hacer la copia para asegurarme de que tengo exactamente lo que necesito.

¿Hay otros comandos como scp (por ejemplo, srm o smv)? ¿O hay alguna forma de eliminar carpetas y archivos remotos?

code_fodder
fuente

Respuestas:

19

El sshcomando le permitirá ejecutar prácticamente cualquier comando en el host remoto, por ejemplo,

ssh yourlogin@remotehost rmdir somedir

donde en este ejemplo somedires relativo al directorio de inicio de su inicio de sesión.

garyjohn
fuente
Gracias por eso. El único problema que tengo con el método es que cada vez que lo llamas tienes que "iniciar sesión" nuevamente :(. Dado que mi objetivo está incrustado, no puedo usar las teclas ssh porque todo se sobrescribe, así que estoy tratando de haga esto en un comando. rsync parece prometedor. Pero, +1 ya que esto responde la pregunta :))
code_fodder
55
@code_fodder también deberá iniciar sesión con rsync. De hecho, deberá iniciar sesión nuevamente con todos los métodos. De hecho, con ssh al menos puede ejecutar varios comandos en una sola vez: ssh you@host bash -c "command1;command2;command3; commandN".
terdon 01 de
@terdon Este es un buen punto y funciona bien gracias :)
code_fodder
4

Rsync copiará una ruta / árbol completo y verificará los archivos que ya están en el destino y no se molestará en copiarlos si no han cambiado. Si usa la opción --delete, eliminará todos los archivos que están en el destino que ya no están en la fuente. Funciona sobre ssh

jerm
fuente
Estaba jugando con rsync, ya que alguien mencionó esto en otra publicación mía con respecto a scp. Tengo rsync instalado en mi PC local pero no en la PC remota (una unidad integrada). Estaba usando el comando rsync -avz -e shh root@location:/path/to/dest /path/from/hostPero falla después de ingresar la contraseña que dice sh: rsync: not found. ¿Eso significa que rsync tiene que existir en la PC remota? ¡Gracias!
code_fodder
1
@code_fodder sí, necesita un programa que se ejecute en el sistema remoto para decirle qué hacer. No es un programa de copia directa
canadiense Luke
@CanadianLuke ... maldición :(
code_fodder
@code_fodder solo instálalo! Más útil que no
Canadian Luke
Dependiendo de la solución integrada, rsync puede o no estar disponible con cualquier grado de facilidad ... aunque es una falta muy común, como dije, dependiendo de la solución integrada. Nota: Rsync no tiene que estar ejecutándose todo el tiempo, pero debe estar presente para ejecutarse bajo demanda.
jerm
3

Si su servidor SSH remoto admite el subsistema SFTP (la mayoría lo hace, a menos que se haya deshabilitado explícitamente), puede usar el sftpshell (o cualquier otro cliente SFTP ) para manipular archivos y directorios en el servidor remoto.

Desafortunadamente, una cosa que el sftpshell básico aparentemente no maneja es la eliminación recursiva de directorios; Para eliminar un directorio, primero debe eliminar todo su contenido. Sin embargo, la mayoría de los otros clientes (especialmente los gráficos) sí lo admiten.

(No menciona cuál es su sistema operativo local, pero si es Linux, puede usar su administrador de archivos nativo como cliente GUI SFTP apuntándolo a una URL como sftp: // user @ host / path /. Para Windows, WinSCP es un cliente decente y FileZilla es una buena solución multiplataforma).

Ilmari Karonen
fuente
1

Para vaciar un directorio remoto (/ local), use rsync así:

rsync -r --delete-excluded --exclude=* / server:/tmp/empty_this_dir/

Tenga cuidado: elimina todo lo que se encuentre debajo del destino especificado.

hermano
fuente
He intentado esto, pero devuelve un error y no elimina el directorio remoto. error de solicitud de ejecución en el canal 0 rsync: conexión inesperadamente cerrada (0 bytes recibidos hasta ahora) [remitente] error rsync: error inexplicable (código 255) en io.c (235) [remitente = 3.1.2]
xarlymg89
Parece que hay un problema al iniciar rsync en el lado remoto o incluso al conectarse a través de ssh. Puedes intentar ssh server rsync --versiono ssh -v server rsync --versionencontrar el motivo.
hermano
Gracias por responder, sin embargo, encontré una manera de resolver el problema, no tan elegante pero con resultados similares. Lo intentaré nuevamente ya que creo que tendré que enfrentarlo nuevamente.
xarlymg89
0

Como alternativa, montar el directorio remoto en uno local, luego eliminarlo rm -r /path_to_directory_to_removey finalmente desmontar el directorio hace el truco.

Respuesta original aquí: /programming//a/24650511/973919

xarlymg89
fuente