linux - FTP 文件上传 - 脚本卡住

标签 linux bash unix terminal

我有一个基本的 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。但是我正在从不同的计算机运行脚本,所以我希望脚本每次上传时都像这样将 file.db 上传到我的 FTP:

  • 文件1.db
  • 文件2.db
  • 文件3.db
  • file4.db

最佳答案

您的问题有点不清楚,但如果我理解正确的话,您是在尝试按顺序命名数据库文件而不覆盖任何旧文件。您必须从 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

关于linux - FTP 文件上传 - 脚本卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13846882/

相关文章:

linux - 遍历目录以查找 pom.xml 文件

linux - 无法在ubuntu中执行bash命令: permissions denied

c - 调试多线程程序的技巧

python - 按下 ESCape 时如何退出 python2.x 脚本

c - 为什么我很困惑 "the exit status code is 0 when a command fails in BASH"

linux - grep 使用另一个命令的输出

c - 如何禁用 relro 覆盖 fini_array 或 got.plt 元素

bash - 遇到第一个错误就停止

c++ - UNIX/OSX 版本的 semtimedop

shell - Bourne shell 脚本读取文件