2009-08-25 2 views
0

Je dois transférer des fichiers dont le nom se compose de deux variables X, Y et ils se trouvent dans le répertoire ABC du serveur ftp dans mon répertoire unix local XYZ. Après avoir transféré les fichiers je dois aller au chemin du répertoire local et je devrais untar (les fichiers d'entrée sont des fichiers compressés) eux. Je dois utiliser un nom d'utilisateur et un mot de passe pour me connecter au FTP. Lorsque je copie des fichiers sur un serveur local, je dois aussi utiliser mon nom d'utilisateur et mon mot de passe.Transférer des fichiers d'un serveur FTP vers un serveur local Unix

Voici ma tentative actuelle. Est-ce que ça marchera? Comment puis-je l'améliorer?

ftp -n hostname <<EOF 
user username pwd 
cd ABC 
get ls *X*.tar | ls *Y*.tar [email protected] : XYZ 
EOF 
bye 
for next in `ls *.tar` 
do 
tar -zvxf $next 
done 
+1

vous ne pouvez pas travailler avec scp tout en ftp. –

+0

entre «EOF et EOF vous ne pouvez pas utiliser d'autres commandes que celles de ftp, pas de scp, pas de cp. get n'est pas une commande du tout, c'est wget, mais cela doit être appelé à la place de la commande ftp. –

Répondre

1

Veuillez essayer ci-dessous code. J'espère que cela vous aide.

#! /bin/bash 

cd local_path 
USER='username' 
PASSWD='password' 
file_name='files' 

for HOST in ftpserver 
do 
echo $HOST 
ftp -n $HOST <<END_SCRIPT 
quote USER $USER 
quote PASS $PASSWD 
bin 
prompt 

cd "remote_path" 
lcd "local_path" 

mget $file_name.gz* 

quit 
END_SCRIPT 
done 

#extract file 
mkdir -p ../archive/$DATE 
for HOST in ftpserver 
do 
     gunzip $file_name.gz 
done 
+0

mais 1. J'ai différents noms d'utilisateur et pwds pour le serveur local et ftp. 2. je dois sélectionner des fichiers dont les noms doivent contenir X et Y – musicking123

+0

vous devriez enquêter un peu sur vous-même, si vous avez des noms d'utilisateur différents pour ftp et ssh, il suffit d'ajouter une autre variable pour cela. –

+0

@ musicking123: 1) Vous avez dit que vous avez un utilisateur diff et passez pour local et ftp. Dans mon code, vous devez mettre un utilisateur FTP et passer, pas besoin d'utilisateur local/passe. 2) Vous pouvez utiliser * X * .tar et * Y * .tar pendant mget. – Space

1

Je vous suggère de regarder juste dans le manuel de ftp ligne de commande ftp-outil et script avec cela. Alternative: utilisez wget pour télécharger le fichier ftp sur la machine locale, puis scp sur la machine cible, je suppose que l'utilisation de public-key-authentication pour ssh, que scp n'a pas besoin de mot de passe, alors cela devrait être simple comme ce.

wget --ftp-user=$USERNAME --ftp-password=$PASSWORD ftp://$HOSTNAME/ABC/$Y.tar 
scp $Y.tar [email protected]$SCPHOST/targetpath/$X.tar 
+0

pouvez-vous voir mon code et dites-moi ça va fonctionner? plz – musicking123

+0

bien, je suppose que non, vous essayez d'envoyer au serveur ftp votre commande scp. –

-1

Vous pouvez utiliser wget pour télécharger des fichiers depuis un serveur FTP pour unix système

cd YOUR_DIRECTORY 

wget --user=USERNAME --password='PASSWORD' HOST_NAME/REMOTE_PATH/FILE_NAME.EXTENSION