archivos scp y eliminar archivos en el directorio remoto [cerrado]

18

Soy un novato de Unix, así que ten paciencia :-)

Tengo un script que scps un montón de archivos a otro servidor.

Supongamos que son z1.foo, z2.foo, etc. Lo que quiero hacer es scp archivos y eliminar archivos de más de 5 días en el servidor de destino.

¿Cómo elimino archivos de forma segura del destino?

Gracias.

Kapsh
fuente
"sobrescribir los archivos en el destino"? Si scp archivos que ya existen en el directorio remoto, se sobrescribirán automáticamente
Aki
es una buena idea eliminar los archivos con un script de shell localmente, lo que significa que está SCPing archivos cuando lo desee. pero hay shell script que se ejecuta en base diaria para eliminar los archivos en una carpeta determinada, donde se mantiene la files.command será algo como:find /path/to/files* -mtime +5 -exec rm {} \;
Zareh Kasparian

Respuestas:

21

Para eliminar archivos de forma no interactiva:

ssh hostname "rm -f z100.foo z200.foo"
Warner
fuente
1
¿Qué es el nombre de host? ¿es servername@ipaddress:path/to/dir/?
HattrickNZ
1
hostname es just user:password@ipaddresso user:password@dnsnamepuedes omitir la contraseña si no es necesario. Acabo de probarlo root@somednsnamey funciona bien. La path/to/dirparte que puse en el comando rm, como ruta absoluta, para asegurarme de que es correcta.
AsGoodAsItGets
6

Puede realizar ambas tareas en el mismo comando utilizando la --deletebandera para rsync.

> ls -1 localdir/
a.foo
b.foo

> ssh remote-host "ls -1 remotedir/"
c.foo

> rsync -a --delete localdir/ remote-host:remotedir/

> ssh remote-host "ls -1 remotedir/"
a.foo
b.foo

La --deleteopción elimina archivos del directorio de destino que no existen en el origen. Hay algunas opciones sobre cuándo se eliminan los archivos y cómo manejar los archivos excluidos.

> man rysnc
...
--delete                delete extraneous files from dest dirs
--delete-before         receiver deletes before transfer (default)
--delete-during         receiver deletes during xfer, not before
--delete-after          receiver deletes after transfer, not before
--delete-excluded       also delete excluded files from dest dirs

La página del manual también contiene esta advertencia:

¡Esta opción puede ser peligrosa si se usa incorrectamente! Es una muy buena idea ejecutar primero usando --dry-run option( -n) para ver qué archivos se eliminarán para asegurarse de que los archivos importantes no estén en la lista.

Ladadadada
fuente
2

Si desea establecer el nombre de usuario y el número de puerto, puede hacer lo siguiente:

ssh [email protected] -p22 "rm -rf /home/amzad/test.php"
m82amjad
fuente