我有一个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
答案 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