2010-11-06 29 views
9

Ok donc je sais un peu comment le faire localement avec une commande find puis cp, mais je ne sais pas comment faire la même chose à distance avec scp.Script Bash pour scp fichier le plus récent dans un répertoire sur un serveur distant

Alors sachez ceci:

scp -vp [email protected]:/target/location/ /destination/dir/. 

Ce répertoire cible va être plein de sauvegardes de base de données, comment puis-je dire pour trouver la dernière sauvegarde et scp que localement?

Répondre

9
remote_dir=/what/ever 
dst=remote-system.host.name.com 
scp $dst:`ssh $dst ls -1td $remote_dir/\* | head -1` /tmp/lastmod 
+1

Ok c'était ça! Merci – beatbreaker

1

Ecrire un script sur le côté distant qui utilise find pour le trouver, puis cat l'envoyer à stdout, puis exécutez:

ssh [email protected] runscript.sh > localcopy 
+0

Alors je fais quelque chose comme ça à distance: ls -t | tête -1 | cat stdout puis je l'exécute localement avec ssh me @ serveur runscript.sh> localcopy ... puis catcopy local dans une variable qui s'utilise pour le nom du fichier? – beatbreaker

+0

Non. Le script ressemble à: 'cat '$ (ls -t | head -n 1)" ', puis localcopy aura le contenu du fichier. –

+0

Humm ne semble pas nécessaire pour le chat, le >> fait la sortie. donc ls -t/var/backup | head -n 1 – beatbreaker