script shell pour télécharger le dernier fichier du FTP
Je suis en train d'écrire le script shell première fois, je veux télécharger la dernière de créer le fichier à partir de FTP.
Je veux télécharger le dernier fichier de dossier spécifique. Ci-dessous mon code pour que. Mais c'est de télécharger tous les fichiers du dossier pas la dernière.
ftp -in ftp.abc.com << SCRIPTEND
user xyz xyz
binary
cd Rpts/
mget ls -t -r | tail -n 1
quit
SCRIPTEND
m'aider, s'il vous plaît?
OriginalL'auteur mahesh | 2012-09-18
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser wget ou lftp utilitaire au lieu de cela, il compare le fichier de l'heure/date et AFAIR son but est ftp de script. Interrupteur à ssh/rsync si possible, vous pouvez lire un peu plus sur lftp au lieu de rsync ici:
https://serverfault.com/questions/24622/how-to-use-rsync-over-ftp
Probablement le moyen le plus facile est de mettre en lien la dernière version sur le serveur, afin de "courant", et de toujours obtenir le fichier pointé. Si vous n'êtes pas admin du serveur, vous devez dresser une liste de tous les fichiers avec la date/l'heure, prenez l'information, l'analyser, décider ce qui est nouveau, dans l'intervalle de l'état sur le serveur peuvent changer, et vous vous retrouvez en plus des solutions compliquées que ce qu'il vaut.
Le point est, que "ls" trie de sortie, d'une certaine façon, et le temps ne peut pas être par défaut. Il y a des commutateurs de faire le tri de base par exemple sur la modification du temps, cependant, même lorsque le serveur répond avec OK sur ls-t , vous ne pouvez pas être sûr il vraiment prend en charge le tri, il peut simplement ignorer tous les interrupteurs et retourne toujours la même liste, c'est pourquoi les admins utilisent généralement des "actuel" lien (ln -s). Si il n'y a pas de "courant", assurez-vous d'avoir le bon fichier, vous devez analyser la liste de toute façon ( ls -al ).
http://www.catb.org/esr/writings/unix-koans/shell-tools.html
il y a des exemples de code sur serverfault.com question
J'ai vu ça.. mais ce sont les codes de téléchargement à partir de http://FTP..but je peux le faire avec ce script en tant que bien..Mais le problème consiste à télécharger le dernier fichier
la commande ls que j'ai utilisé est de faire exactement la même chose pour attraper le dernier nom de fichier..mais je ne kn pourquoi il ne fonctionne pas dans le cas de ftp
par votre la dernière mise à jour.. je veux dire que j'ai la liste de tous les fichiers et de trouver le fichier le plus récent à l'aide d'un peu de logique.. Mais je ne peux pas d'un script semblable à j'ai mentionné?
OriginalL'auteur Piotr Wadas
Regardant le code, la ligne
mget ls -t -r | tail -n 1
ne fait pas ce que vous en pensez. Il en fait de s'approprier la totalité de la production de
ls -t
et puistail
processus de la sortie demget
. Vous pouvez remplacer cette ligne avecmget $(ls -t -r | tail -n 1)
mais je ne suis pas sûr si
ftp
permettra de soutenir un tel appel...Essayez d'utiliser un client FTP autre que
ftp
. Par exemple,curlftpfs
disponible à curlftpfs.sourceforge.net est un bon candidat car il vous permet de monter un FTP dans un répertoire comme si c'est un dossier local, puis exécuter différentes commandes sur les fichiers (y compris les trouver, grep, etc.). Jetez un oeil à cet article.Cette façon, depuis la sortie vient d'un local de commande, vous seriez plus certain que
ls -t
renvoie une liste proprement triée.Btw, c'est un peu moins compliqué à utiliser
ls -t | head -1
quels -t -r | tail -1
. Ils produisent le même résultat, mais pourquoi inverse et s'emparer de la queue quand il vous suffit de prendre la tête 🙂Si vous utilisez curlftpfs alors votre script serait quelque chose comme ceci (en supposant que le serveur http://ftp.abc.com et l'utilisateur xyz avec mot de passe xyz).
OriginalL'auteur Marko Kudjerski
Ma Solution est: est-ce
OriginalL'auteur Mathias