2012-12-14 4 views
0

iOS 파일을 백업하고 디렉토리 (http://mywebsite.com/sms)의 내 웹 사이트 FTP로 보내는 bash 코드가 있는데이 코드를 실행하면 ' 파일을 t.zip '하고 zippyy.db 파일을/sms 폴더가 아닌 내 웹 사이트의 루트에 둡니다.FTP zip 스크립트 - STUCK

코드가 실행될 때 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 
+0

'sh -x script'를 사용하여 스크립트를 실행하십시오. –

+0

거의 작동했습니다! 그냥 .zip 대신 .db 파일을 얻는 이유를 알아야합니다. ?? –

+0

아마도 NEXTDB = "zippyy $ {FILECOUNT} .db"'때문에. –

답변

0

일단 아카이브가 ftp 되었으면 손상된 것입니까?

아마도 ASCII 모드 여야합니다. 컴퓨터에서 기본 모드로 파일을 전송했을 가능성이 있습니다.

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

참고를 추가로

그러나 먼저, zip 파일의 사용자 로컬 복사본, 문제 테스트 옵션이 성공하면

zip -t $ZIPFILE 

에, 다음의 ftp를 변경 여기-문서 ftp 명령 binary은 ASCII에 대한 번역없이 파일을 보냅니다.


이 높은 다음 명령을

man ftp 

를 발행 적어도 한 번 그것을 통해 읽을 좋습니다. 거기에는 유용한 ftp 맨 페이지의 섹션이 있습니다. ;-). 또한 공통의 옵션, 매개 변수 및 하위 명령 집합을 따르는 것만으로 많은 FTP 클라이언트가 있다는 것을 알아 두십시오. 집에서 일하게되면 사무실이나 친구 집에서 일할 것이라고 가정하지 마십시오!

IHTH

+0

당신은 훌륭합니다! 감사합니다! 방금 추가 한 줄 : 바이너리 사용자 $ USER $ PASS 다시 한번 감사드립니다 :) –

+0

OH! 한 번만 질문을 던지면이 스크립트는 루트로 로그인해야합니다. 스크립트에 sudo를 쓰면 어떻게 쓸 수 있습니까? 스크립트를 실행하기 전에 su를 사용하지 않아도됩니까? 나에게 작은 코드를 작성해 주시면 그냥 복사 할 수 있을까요? 정말로 감사 할 것입니다! 고마워요. –

+0

'sudo '에 대한 경험이별로 없습니다. 직장 환경에 있습니까? 그렇다면 그들은 그러한 일을하는 당신에 대한 규칙을 가지고있을 것입니다. 집에서이 작업을한다면'sudo' 매뉴얼 페이지를 읽고 sudo 설정 파일을 만들 항목을 찾아야합니다. 행운을 빕니다. – shellter