我有一个基本的bash脚本,我用它来复制文件并将其上传到我的FTP:
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 中。但是我正在从不同的计算机运行脚本,所以不知何故,我希望脚本每次上传文件时都像这样将文件.db上传到我的 FTP:
- 文件1.db
- 文件2.db
- 文件3.db
- 文件4.db
您的问题有点不清楚,但是如果我理解正确,您正在尝试按顺序命名数据库文件而不会覆盖任何旧文件。您必须从FTP服务器获取文件列表才能找出已经上传的文件。
此代码将从服务器获取以"file"开头并以".db"结尾的文件列表,对它们进行计数,然后将"file.db"的名称更改为"fileXX.db",其中"XX"是命名序列中的下一个数字(即file1.db,file2.db,file3.db等)。
我不确定"短信.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