2012-12-12 61 views
1

我有我使用复制文件,并将其上传到我的FTP一个基本的bash脚本:FTP文件上传 - 脚本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 

当我运行该脚本,它将该文件保存到我的FTP完美。但是,我从不同的计算机的脚本,以便在某种程度上,我想剧本到file.db上传到我的FTP这样每次它上传它:

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

回答

3

你的问题有点不清楚,但如果我理解正确的话,你想在命名顺序数据库文件,而不会覆盖任何旧文件。您必须从FTP服务器获取文件列表才能找出已上传的文件。

该代码将从服务器获取以“file”开头并以“.db”结尾的文件列表,然后将其计数,然后将您的“file.db”的名称更改为“fileXX.db”,其中“XX”是命名序列中的下一个数字(即file1.db,file2.db,file3.db等)。

我不确定“sms.db”来自哪里。我在脚本中将其更改为“file.db”。

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