FTP zip脚本 - STUCK

时间:2012-12-14 12:16:34

标签: iphone bash unix terminal

我有一个bash代码来备份我的iOS文件并将它们发送到我的网站FTP目录:(http://mywebsite.com/sms)但是当我运行此代码时,它不是.zip'ing文件并将文件'zippyy.db'保留在我的网站的根目录中,而不是在/ sms文件夹中。

我将从一些设备运行这个脚本,所以当我执行代码时,如果FTP中已经存在一个名为zippyy.zip的文件,它会将其更改为zippyy1.zip,zippyy2.zip等。< / p>

我真的很感激有人为我重写剧本。先感谢您!这是我的代码:

 #!/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

1 个答案:

答案 0 :(得分:0)

你的意思是你的档案在ftp一旦被破坏了吗?

可能是您在机器上以默认模式发送文件,必须是ASCII模式。

但首先,在您的zip文件的本地副本上,发出测试选项

zip -t $ZIPFILE

如果成功,则将ftp here-doc更改为

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

注意添加了ftp命令binary,这意味着发送没有ASCII翻译的文件。


强烈建议发出以下命令

 man ftp

至少阅读一次。虽然有一些甚至是一个很好的ftp手册页,但我找不到有用的部分! ;-)。还要注意,有许多ftp客户端,只是表现出对一组通用选项,参数和子命令的依从性。不要以为一旦你在家里工作,它会在办公室或朋友家里工作!

IHTH