【问题标题】:FTP File upload - script STUCKFTP 文件上传 - 脚本 STUCK
【发布时间】:2012-12-12 19:09:15
【问题描述】:

我有一个基本的 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:

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

【问题讨论】:

    标签: linux bash unix terminal


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-09-18
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多