1

ファイルをコピーして FTP にアップロードするために使用している基本的な bash スクリプトがあります。

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
4

1 に答える 1

3

あなたの質問は少し不明確ですが、私の理解が正しければ、古いファイルを上書きせずにデータベース ファイルに順番に名前を付けようとしています。アップロード済みのファイルを確認するには、FTP サーバーからファイルのリストを取得する必要があります。

このコードは、「file」で始まり「.db」で終わるファイルのリストをサーバーから取得し、それらを数えてから、「file.db」の名前を「fileXX.db」に変更します。ここで、「XX」は「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-12-12T19:37:28.020 に答える