2009-02-02 22 views
12
foo.txt

del archivo de la máquina remota en: /home/user/foo.txtEl uso de rsync para eliminar un solo archivo existe

No existe en la máquina local.

Quiero eliminar foo.txt usando rsync.

No sé (y asumo a los fines de esta pregunta que no puedo encontrar) qué otros archivos hay en/home/user en las máquinas locales o remotas, así que no puedo simplemente sincronizar todo el directorio .

¿Qué comando rsync puedo usar para eliminar foo.txt en la máquina remota?

Respuesta

26

Prueba esto:

rsync -rv --delete --include=foo.txt '--exclude=*' /home/user/ [email protected]:/home/user/ 

(recomiendo corriendo con --dry-run primero en probarlo) Aunque parece que sería más fácil de usar ssh ...

ssh [email protected] "rm /home/user/foo.txt" 
+0

No se puede usar SSH para este propósito. (Es una cuestión de política, no una cuestión técnica.;)) – dirtside

+0

También: rsync: link_stat "/home/user/foo.txt" failed: No existe tal archivo o directorio (2) – dirtside

+0

Aparentemente dado que el archivo no existen localmente, no podemos especificarlo como el archivo de origen a transferir. La única manera en que se eliminan los archivos es si sincronizas un directorio completo; cualquier archivo remoto perdido se borrará. Creo. – dirtside

6

que es un poco trivial , pero si, como yo, llegaste a esta página buscando una manera de eliminar un contenido de un directorio del servidor remoto utilizando rsync, así es como lo hice:

  1. Crear una carpeta simulacro vacío:

    mkdir simulacro

  2. sincronización con él

    rsync -arv --delete --dry dirigido ~/maqueta/remote_server: ~/dir_to_clean/

  3. Eliminar --dry-run de la línea anterior para realmente hacer la cosa.

+0

+1, pero agrega -r para recurse en subdirectorios. En nuestro servidor de respaldo, los servidores de respaldo solo permiten scp, sftp y rsync. Tenía algunos sitios obsoletos gruesos para eliminar, rsync hizo el truco (sftp habría tomado días ;-)) – virtualeyes

+1

solo para resumir el comando recursive-delete-everything: "rsync -rv --delete --force/empty/remote: vacío -me/" – virtualeyes

+1

Si usa" -a "," -r "está implícito. "-a" = "-rlptgoD" Swivel

Cuestiones relacionadas