Skip to content

Instantly share code, notes, and snippets.

@takamii
Created April 19, 2012 16:23
Show Gist options
  • Save takamii/2422102 to your computer and use it in GitHub Desktop.
Save takamii/2422102 to your computer and use it in GitHub Desktop.
iPhoneバックアップスクリプト(iOS5.x用)
#!/bin/sh
#
# iOS5.xの設定ファイル&データのバックアップスクリプト
#
# 使い方:
# rootユーザでbkup_system.shを実行すると、カレントに現在の年月日でフォルダを作成しその中にtgz形式で
# バックアップを取得します。主に/var/mobile/Library配下の設定ファイルやデータをバックアップ。
# バックアップファイルは、各フォルダ名.tgz
#
# 詳細:
# /var/mobile/Library配下でバックアップするフォルダを追加したい場合は、MOBILE_LIB_DIRSに指定。
# バックアップから除外したいファイルやフォルダがある場合は、「cat >${EXCLUDE} << EOF」から「EOF」間に追記。
#
# /var/mobile/Library以外には、現在は
# /var/wireless、/var/root配下のdotfile(.bashrc等)、/etc/ssh、/etc/apt/sources.list.dをバックアップ。
# バックアップ元を追加したい場合は最後の方の行の「bkup "/etc" "ssh"」と書いてある所に追記。
# 第一引数を基準に第二引数のフォルダ(スペースで区切って複数指定可)をバックアップ。
# バックアップ後のtgzのファイル名は第二引数名を使用する。
#
# 補足:
# iCloudでバックアップを取っている場合は、AdressBook、Calendar、Mail、Notes、Safariあたりの
# バックアップは不要と思います。ただしiCloudは個別にリストアしたり出来ないため、念のために
# 取っておくようにしています。
#
# その他:
# 自分がこのスクリプトでのバックアップ以外に取ってるもの。
# /var/mobile/Media配下のデータ(カメラロールのDCIMフォルダ等)
# /var/mobile/Application配下のデータ(AppStoreアプリのデータ)
# ↑自動化が面倒&サイズが大きいため個別にiExplorer等で取っています。
#
MOBILE_LIB="/var/mobile/Library"
#MOBILE_LIB_DIRS="AddressBook Caches/libactivator.plist Calendar ConfigurationProfiles iFile Keyboard Mail Maps Notes Preferences SBSettings SMS Safari SpringBoard Voicemail WebClips YouTube"
MOBILE_LIB_DIRS="AddressBook Caches/libactivator.plist Calendar ConfigurationProfiles iFile Keyboard Maps Notes Preferences SBSettings SMS Safari SpringBoard Voicemail WebClips YouTube"
EXCLUDE="`pwd`/exclude.txt"
LOGFILE="`pwd`/bkup.log"
cat >${EXCLUDE} <<EOF
AddressBook/IntellibornLicenses
iFile/Cache
iFile/Trash
Keyboard/DisplayRecorder
Preferences/TimeCapsule
SBSettings/Themes
wireless/awdd
wireless/spool
EOF
log(){
echo "$1"
echo "`date "+%Y/%m/%d %H:%M:%S"` :$1" >>${LOGFILE}
}
bkup(){
BASEDIR=$1
TARGETDIR=$2
FILE_PREFIX=${dirDate//./}
pushd ${BASEDIR} >/dev/null
for DIR in ${TARGETDIR}
do
log "Backup ${BASEDIR}/${DIR}"
tar zcf ${BACKDIR}/${DIR%%/*}_${FILE_PREFIX}.tgz ${DIR} -X ${EXCLUDE} 2>>${LOGFILE}
done
popd >/dev/null
}
bkup_file(){
BASEDIR=$1
TARGETFILE=$2
FILE_PREFIX=${dirDate//./}
pushd ${BASEDIR} >/dev/null
log "Backup ${BASEDIR}/${TARGETFILE}"
tar zcf ${BACKDIR}/${BASEDIR##*/}_${FILE_PREFIX}.tgz ${TARGETFILE} -X ${EXCLUDE} 2>>${LOGFILE}
popd >/dev/null
}
dirDate="`date +%Y.%m.%d`"
if ! [ -e $dirDate ]; then
mkdir $dirDate
fi
BACKDIR="`pwd`/${dirDate}"
log "== Backup STARTED!! =="
bkup ${MOBILE_LIB} "${MOBILE_LIB_DIRS}"
bkup "/var" "wireless"
bkup_file "/var/root" ".[A-z]*"
bkup "/etc" "ssh"
bkup "/etc/apt" "sources.list.d"
bkup_file "/var/lib/cydia" "metadata.plist"
log "== Backup FINISHED!! =="
rm ${EXCLUDE}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment