2012-12-12 1 views
1

J'ai un script bash de base que j'utilise pour copier un fichier et le télécharger sur mon FTP:FTP File upload - Script STUCK

cp -i /var/mobile/file.db /var 
cd /var 

HOST=MYFTPHOST 
USER=USERNAME 
PASS=PASSWORD 

ftp -inv $HOST << EOF 
    user $USER $PASS 
    cd websitefolder 
    put sms.db 
    bye 
EOF 

rm -f file.db 

Quand je lance le script, il enregistre le fichier à mon FTP parfaitement. Mais je suis en cours d'exécution du script de différent de manière en quelque sorte l'ordinateur, je voudrais que le script pour télécharger le file.db à mon FTP comme celui-ci à chaque fois qu'il télécharge:

  • file1.db
  • file2.db
  • file3.db
  • file4.db

Répondre

3

Votre question est un peu floue, mais si je comprends bien, vous essayez de nommer les fichiers de base de données dans un ordre séquentiel sans écraser les anciens fichiers. Vous devrez obtenir la liste des fichiers du serveur FTP afin de savoir quels fichiers ont déjà été téléchargés.

Ce code obtiendra la liste des fichiers du serveur qui commencent par "fichier" et se termine par ".db", comptez-les, puis changez le nom de votre "fichier.db" en "fileXX.db", où "XX" est le numéro suivant dans la séquence de nommage (ie file1.db, file2.db, file3.db, etc).

Je ne suis pas sûr d'où vient "sms.db". Je l'ai changé en "file.db" dans le script.

cp -i /var/mobile/file.db /var 
cd /var 

HOST=MYFTPHOST 
USER=USERNAME 
PASS=PASSWORD 

ftp -inv $HOST << EOF 
user $USER $PASS 
cd websitefolder 
LIST=$(ls | grep file*.db) 
bye 
EOF 

FILECOUNT=0 
for FILE in $LIST 
do 
    if [ -f $FILE ]; 
    then 
     FILECOUNT+=1 
done 
FILECOUNT+=1 
NEXTDB="file$FILECOUNT.db" 
mv file.db $NEXTDB 

ftp -inv $HOST << EOF  
put $NEXTDB 
bye 
EOF