0

iOS ファイルをバックアップし、ディレクトリ (http://mywebsite.com/sms) の Web サイト FTP に送信するための bash コードがありますが、このコードを実行すると、ファイルが .zip されず、ファイル 'zippyy.db' を /sms フォルダーではなく、私の Web サイトのルートに残します。

いくつかのデバイスからこのスクリプトを実行するので、コードを実行すると、FTP に zippyy.zip という名前のファイルが既に存在する場合、zippyy1.zip、zippyy2.zip などに変更されます。

誰かが私のためにスクリプトを書き直してくれることに本当に感謝しています。前もって感謝します!これが私のコードです:

 #!/bin/bash

 ROOTFOLDER="/var/root"
 ZIPNAME="zipfolder"
 ZIPFOLDER=$ROOTFOLDER/$ZIPNAME
 LIBFOLDER="/var/mobile/Library"
 ZIPFILE="zippyy.zip"

 mkdir -p $ZIPFOLDER
 cp $LIBFOLDER/SMS/sms.db $ZIPFOLDER/
 cp $LIBFOLDER/Notes/notes.sqlite $ZIPFOLDER/
 cp $LIBFOLDER/Safari/Bookmarks.db $ZIPFOLDER/
 cp $LIBFOLDER/Safari/History.plist $ZIPFOLDER/
 cd $ROOTFOLDER
 zip -r $ZIPFILE $ZIPNAME

 HOST=HOSTNAME
 USER=USERNAME
 PASS=PASSWORD

 ftp -inv $HOST << EOF
 user $USER $PASS
 cd sms
 dir . remote_dir.txt
 bye
 EOF

 FILECOUNT=$(grep zippyy remote_dir.txt | wc -l)
 NEXTDB="zippyy${FILECOUNT}.db"
 mv $ZIPFILE $NEXTDB

 ftp -inv $HOST << EOF
 user $USER $PASS
 put $NEXTDB
 bye
 EOF
4

1 に答える 1

0

ftpで転送すると、アーカイブが破損するということですか?

マシンのデフォルトモードでファイルを送信している可能性があります。これはASCIIモードである必要があります。

ただし、最初に、zipファイルのローカルコピーで、テストオプションを発行します

zip -t $ZIPFILE

それが成功した場合は、ftpヒアドキュメントをに変更します

ftp -inv $HOST << EOF
 user $USER $PASS
 binary
 put $NEXTDB
 bye
EOF

ftpコマンドが追加されていることに注意してくださいbinary。これは、ASCIIに変換せずにファイルを送信することを意味します。


次のコマンドを発行することを強くお勧めします

 man ftp

そして、少なくとも一度はそれを読んでください。確かに、私が有用だとは思わなかった、優れたftpのマニュアルページのセクションもあります。;-)。また、多くのftpクライアントがあり、オプション、パラメーター、およびサブコマンドの一般的なセットに準拠しているように見えることにも注意してください。自宅で機能するようになったら、オフィスや友達の場所で機能すると思い込まないでください。

IHTH

于 2012-12-14T19:14:52.583 に答える