Created
July 23, 2011 20:08
-
-
Save arawas/1101829 to your computer and use it in GitHub Desktop.
Backup/restore for apt/Cydia repos and packages, libactivator/libhide/libiconsupport settings.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# | |
# @(#) bkrs.sh | |
# $Id: bkrs.sh,v.0.03 2012/05/28 00:00:00 arawas Exp $ | |
# | |
# Usage: | |
# [su; |sudo] $CMDNAME -[b|r] [-o <DIR>] | |
# -b Backup | |
# -r Restore | |
# | |
# -o Currently NOT supported this feature | |
# | |
# You need have superuser privilege! | |
# Use 'sudo' or 'su' before run this script. | |
# | |
# Description: | |
# backup and restore for Cydia's stuff. | |
# | |
# Depends: | |
# apt7,aptitude,unzip,zip | |
# | |
######################################################################## | |
#readonly CMDNAME=`basename $0` | |
readonly CMDNAME=bkrs.sh | |
readonly HOME_DIR=/var/mobile | |
readonly BACKUP_DIR=/var/mobile/_backup | |
readonly BACKUP_FILE=backup.zip | |
readonly DEBS_LIST=deblists.txt | |
readonly APT_DIR=/etc/apt/sources.list.d | |
readonly APT_SRC=cydia.list | |
readonly CYDIA_DIR=/var/lib/cydia | |
readonly CYDIA_SRC=metadata.plist | |
readonly ACTIVATOR_DIR=/var/mobile/Library/Caches | |
readonly ACTIVATOR_SRC=libactivator.plist | |
readonly LIBHIDE_DIR=/var/mobile/Library/LibHide | |
readonly LIBHIDE_SRC=hidden.plist | |
readonly ICONSUPPORT_DIR=/var/mobile/Library/SpringBoard | |
readonly ICONSUPPORT_SRC=IconSupportState* | |
readonly IFILE_DIR=$HOME_DIR/Library/iFile | |
readonly IFILE_SRC=Bookmarks.plist | |
readonly ETC_DIR=/etc | |
readonly LIGHTTPD_SRC=lighttpd2.conf | |
readonly SUDOERS_SRC=sudoers | |
readonly SCREEN_SRC=screenrc | |
readonly SCREEN_PSRC=.screenrc | |
readonly PROFILE_SRC=.profile | |
readonly BASHRC_SRC=.bash_rc | |
readonly BASHPROF_SRC=.bash_profile | |
readonly SMS_DIR=/var/mobile/Library/SMS | |
readonly SMS_ARCH=SMS.tgz | |
readonly CH_DIR=/var/wireless/Library/CallHistory | |
readonly CH_ARCH=CallHistory.tgz | |
readonly DCIM_DIR=/var/mobile/Media/DCIM | |
readonly DCIM_ARCH=DCIM.tgz | |
readonly PHOTO_DIR=/var/mobile/Media/PhotoData | |
readonly PHOTO_ARCH=PhotoData.tgz | |
readonly PHOTOS_DIR=/var/mobile/Media/Photos | |
readonly PHOTOS_ARCH=Photos.tgz | |
readonly VR_DIR=/var/mobile/Media/Recordings | |
readonly VR_ARCH=Recordings.tgz | |
mode="" | |
#### FUNCTIONS #### | |
function usage() { | |
cat <<__EOT__ | |
Usage: [su; |sudo] $CMDNAME -[b|r] [-o <DIR>] | |
-b Backup | |
-r Restore | |
-o Currently NOT supported this feature | |
Note: You NEED super user's permission(s), use su or sudo command. | |
Important: This script DEPENDS on 'zip','unzip','apt7' and 'aptitude'. | |
Please install these packages through Cydia, | |
BEFORE USING this script. | |
__EOT__ | |
return 1 | |
} | |
function backup_files() { | |
if [ -d $BACKUP_DIR ]; then | |
rm -rf $BACKUP_DIR | |
fi | |
mkdir -p $BACKUP_DIR || { exit 1; } | |
if [ -f $HOME_DIR/$BACKUP_FILE ]; then | |
rm -rf $HOME_DIR/$BACKUP_FILE | |
fi | |
echo "Backuping shell environment..." | |
if [ -e $HOME_DIR/$PROFILE_SRC ]; then | |
cp -f $HOME_DIR/$PROFILE_SRC $BACKUP_DIR/ || { exit 1; } | |
fi | |
if [ -e $HOME_DIR/$BASHRC_SRC ]; then | |
cp -f $HOME_DIR/$BASHRC_SRC $BACKUP_DIR/ || { exit 1; } | |
fi | |
if [ -e $HOME_DIR/$BASHPROF_SRC ]; then | |
cp -f $HOME_DIR/$BASHPROF_SRC $BACKUP_DIR/ || { exit 1; } | |
fi | |
if [ -e $ETC_DIR/$LIGHTTPD_SRC ]; then | |
cp -f $ETC_DIR/$LIGHTTPD_SRC $BACKUP_DIR/ || { exit 1; } | |
fi | |
if [ -e $ETC_DIR/$SUDOERS_SRC ]; then | |
cp -f $ETC_DIR/$SUDOERS_SRC $BACKUP_DIR/ || { exit 1; } | |
fi | |
if [ -e $ETC_DIR/$SCREEN_SRC ]; then | |
cp -f $ETC_DIR/$SCREEN_SRC $BACKUP_DIR/ || { exit 1; } | |
fi | |
if [ -e $HOME_DIR/$SCREEN_PSRC ]; then | |
cp -f $HOME_DIR/$SCREEN_PSRC $BACKUP_DIR/ || { exit 1; } | |
fi | |
echo "" | |
echo "Backuping application environment..." | |
if [ -e $IFILE_DIR/$IFILE_SRC ]; then | |
cp -f $IFILE_DIR/$IFILE_SRC $BACKUP_DIR/ || { exit 1; } | |
fi | |
echo "" | |
echo "Backuping libactivator,libhide and libiconsupport's stuff..." | |
if [ -e $ACTIVATOR_DIR/$ACTIVATOR_SRC ]; then | |
cp -f $ACTIVATOR_DIR/$ACTIVATOR_SRC $BACKUP_DIR/ || { exit 1; } | |
fi | |
if [ -e $LIBHIDE_DIR/$LIBHIDE_SRC ]; then | |
cp -f $LIBHIDE_DIR/$LIBHIDE_SRC $BACKUP_DIR/ || { exit 1; } | |
fi | |
if [ -e $ICONSUPPORT_DIR/$ICONSUPPORT_SRC ]; then | |
cp -f $ICONSUPPORT_DIR/$ICONSUPPORT_SRC $BACKUP_DIR/ || { exit 1; } | |
fi | |
echo "" | |
echo "Backuping installed packages list..." | |
dpkg --get-selections >$BACKUP_DIR/$DEBS_LIST || { exit 1; } | |
echo "" | |
echo "Backuping apt/Cydia repositories list..." | |
cp -f $APT_DIR/$APT_SRC $BACKUP_DIR/ | |
cp -f $CYDIA_DIR/$CYDIA_SRC $BACKUP_DIR/ | |
echo "" | |
echo "Backuping SMS history..." | |
if [ -d $SMS_DIR ]; then | |
( cd $SMS_DIR; tar -czf $BACKUP_DIR/$SMS_ARCH . ) | |
fi | |
echo "" | |
echo "Backuping Call history..." | |
if [ -d $CH_DIR ]; then | |
( cd $CH_DIR; tar -czf $BACKUP_DIR/$CH_ARCH . ) | |
fi | |
echo "" | |
echo "Backuping Cameraroll..." | |
if [ -d $DCIM_DIR ]; then | |
( cd $DCIM_DIR; tar -czf $BACKUP_DIR/$DCIM_ARCH . ) | |
fi | |
if [ -d $PHOTO_DIR ]; then | |
( cd $PHOTO_DIR; tar -czf $BACKUP_DIR/$PHOTO_ARCH . ) | |
fi | |
if [ -d $PHOTOS_DIR ]; then | |
( cd $PHOTOS_DIR; tar -czf $BACKUP_DIR/$PHOTOS_ARCH . ) | |
fi | |
echo "" | |
echo "Backuping Voice Records..." | |
if [ -d $VR_DIR ]; then | |
( cd $VR_DIR; tar -czf $BACKUP_DIR/$VR_ARCH . ) | |
fi | |
echo "" | |
echo "Changing permittions..." | |
chown -R mobile:mobile $BACKUP_DIR | |
chmod 644 $BACKUP_DIR | |
echo "" | |
echo "Creating backup archive..." | |
zip -j $HOME_DIR/$BACKUP_FILE $BACKUP_DIR/* || { exit 1; } | |
echo "" | |
# echo "" | |
echo "Backup complete to $HOME_DIR/$BACKUP_FILE." | |
echo "NEXT, backup this file to your computer, and" | |
echo " put back file to same place AFTER restored and jailbreaked." | |
echo "" | |
} | |
function restore_files() { | |
if [ -d $BACKUP_DIR ]; then | |
rm -rf $BACKUP_DIR | |
fi | |
mkdir -p $BACKUP_DIR || { exit 1; } | |
echo "Unpacking backup archive..." | |
unzip $HOME_DIR/$BACKUP_FILE -d $BACKUP_DIR/ || { exit 1; } | |
echo "" | |
while [ 1 ]; do | |
read -p "Would you want to restore SMS history? [Y/N] " key | |
case $key in | |
[yY]) | |
echo "Restoring SMS history..." | |
if [ -d $SMS_DIR ]; then | |
rm -rf $SMS_DIR | |
fi | |
mkdir -p $SMS_DIR || { exit 1; } | |
chmod 700 $SMS_DIR | |
chown mobile:mobile $SMS_DIR | |
( cd $SMS_DIR; tar -xzf $BACKUP_DIR/$SMS_ARCH ) | |
break;; | |
[nN]) | |
break;; | |
esac | |
done | |
echo "" | |
# echo "" | |
while [ 1 ]; do | |
read -p "Would you want to restore Call history? [Y/N] " key | |
case $key in | |
[yY]) | |
echo "Restoring call history..." | |
if [ -d $CH_DIR ]; then | |
rm -rf $CH_DIR | |
fi | |
mkdir -p $CH_DIR || { exit 1; } | |
chmod 755 $CH_DIR | |
chown _wireless:_wireless $CH_DIR | |
( cd $CH_DIR; tar -xzf $BACKUP_DIR/$CH_ARCH ) | |
break;; | |
[nN]) | |
break;; | |
esac | |
done | |
echo "" | |
# echo "" | |
while [ 1 ]; do | |
read -p "Would you want to restore Cameraroll? [Y/N] " key | |
case $key in | |
[yY]) | |
echo "Restoring Cameraroll..." | |
if [ -d $DCIM_DIR ]; then | |
rm -rf $DCIM_DIR | |
fi | |
mkdir -p $DCIM_DIR || { exit 1; } | |
chmod 750 $DCIM_DIR | |
chown mobile:mobile $DCIM_DIR | |
( cd $DCIM_DIR; tar -xzf $BACKUP_DIR/$DCIM_ARCH ) | |
if [ -d $PHOTO_DIR ]; then | |
rm -rf $PHOTO_DIR | |
fi | |
mkdir -p $PHOTO_DIR || { exit 1; } | |
chmod 750 $PHOTO_DIR | |
chown mobile:mobile $PHOTO_DIR | |
( cd $PHOTO_DIR; tar -xzf $BACKUP_DIR/$PHOTO_ARCH ) | |
if [ -d $PHOTOS_DIR ]; then | |
rm -rf $PHOTOS_DIR | |
fi | |
mkdir -p $PHOTOS_DIR || { exit 1; } | |
chmod 750 $PHOTOS_DIR | |
chown mobile:mobile $PHOTOS_DIR | |
( cd $PHOTOS_DIR; tar -xzf $BACKUP_DIR/$PHOTOS_ARCH ) | |
break;; | |
[nN]) | |
break;; | |
esac | |
done | |
echo "" | |
# echo "" | |
while [ 1 ]; do | |
read -p "Would you want to restore Voice records? [Y/N] " key | |
case $key in | |
[yY]) | |
echo "Restoring Voice records..." | |
if [ -d $VR_DIR ]; then | |
rm -rf $VR_DIR | |
fi | |
mkdir -p $VR_DIR || { exit 1; } | |
chmod 755 $VR_DIR | |
chown mobile:mobile $VR_DIR | |
( cd $VR_DIR; tar -xzf $BACKUP_DIR/$VR_ARCH ) | |
break;; | |
[nN]) | |
break;; | |
esac | |
done | |
echo "" | |
# echo "" | |
while [ 1 ]; do | |
read -p "Would you want to restore apt/Cydia repositories? [Y/N] " key | |
case $key in | |
[yY]) | |
echo "Restoring apt/Cydia repositories list..." | |
cp -f $BACKUP_DIR/$CYDIA_SRC $CYDIA_DIR/ || { exit 1;} | |
chmod 644 $CYDIA_DIR/$CYDIA_SRC | |
chown 0:0 $CYDIA_DIR/$CYDIA_SRC | |
cp -f $BACKUP_DIR/$APT_SRC $APT_DIR/ || { exit 1; } | |
chmod 644 $APT_DIR/$APT_SRC | |
chown 0:0 $APT_DIR/$APT_SRC | |
# echo "" | |
while [ 1 ]; do | |
read -p "Would you want to restore installed packages? [Y/N] " pkey | |
case $pkey in | |
[yY]) | |
echo "Restoring (will be) installed package lists..." | |
dpkg --set-selections <$BACKUP_DIR/$DEBS_LIST || { exit 1; } | |
echo "Updating apt/Cydia repositories..." | |
aptitude update | |
echo "Restoring software packages..." | |
apt-get dselect-upgrade || { exit 1; } | |
break;; | |
[nN]) | |
break;; | |
esac | |
done | |
echo "" | |
break;; | |
[nN]) | |
break;; | |
esac | |
done | |
echo "" | |
# echo "" | |
while [ 1 ]; do | |
read -p "Would you want to restore some library's preferences? [Y/N] " key | |
case $key in | |
[yY]) | |
echo "Restoring libiconsupport,libhide and libactivator's stuff..." | |
if [ -e $BACKUP_DIR/$ICONSUPPORT_SRC ]; then | |
cp -f $BACKUP_DIR/$ICONSUPPORT_SRC $ICONSUPPORT_DIR/ || { exit 1; } | |
chmod 644 $ICONSUPPORT_DIR/$ICONSUPPORT_SRC | |
chown mobile:mobile $ICONSUPPORT_DIR/$ICONSUPPORT_SRC | |
fi | |
if [ -e $BACKUP_DIR/$LIBHIDE_SRC ]; then | |
mkdir -p $LIBHIDE_DIR | |
cp -f $BACKUP_DIR/$LIBHIDE_SRC $LIBHIDE_DIR/ || { exit 1; } | |
chmod 644 $LIBHIDE_DIR/$LIBHIDE_SRC | |
chown -R mobile:mobile $LIBHIDE_DIR | |
fi | |
if [ -e $BACKUP_DIR/$ACTIVATOR_SRC ]; then | |
cp -f $BACKUP_DIR/$ACTIVATOR_SRC $ACTIVATOR_DIR/ || { exit 1; } | |
chmod 644 $ACTIVATOR_DIR/$ACTIVATOR_SRC | |
chown mobile:mobile $ACTIVATOR_DIR/$ACTIVATOR_SRC | |
fi | |
break;; | |
[nN]) | |
break;; | |
esac | |
done | |
echo "" | |
# echo "" | |
while [ 1 ]; do | |
read -p "Would you want to restore some application's environment? [Y/N] " key | |
case $key in | |
[yY]) | |
echo "Restoring application's environment..." | |
if [ -e $BACKUP_DIR/$IFILE_SRC ]; then | |
# mkdir -p $IFILE_DIR || {{ exit 1; }} | |
mkdir -p $IFILE_DIR | |
cp -f $BACKUP_DIR/$IFILE_SRC $IFILE_DIR/ || { exit 1; } | |
chmod 644 $IFILE_DIR/$IFILE_SRC | |
chown -R mobile:mobile $IFILE_DIR | |
fi | |
break;; | |
[nN]) | |
break;; | |
esac | |
done | |
echo "" | |
# echo "" | |
while [ 1 ]; do | |
read -p "Would you want to restore shell's environment? [Y/N] " key | |
case $key in | |
[yY]) | |
echo "Restoring shell environment..." | |
if [ -e $BACKUP_DIR/$SCREEN_PSRC ]; then | |
cp -f $BACKUP_DIR/$SCREEN_PSRC $HOME_DIR/ || { exit 1; } | |
chmod 600 $HOME_DIR/$SCREEN_PSRC | |
chown mobile:mobile $HOME_DIR/$SCREEN_PSRC | |
fi | |
if [ -e $BACKUP_DIR/$SCREEN_SRC ]; then | |
cp -f $BACKUP_DIR/$SCREEN_SRC $ETC_DIR/ || { exit 1; } | |
chmod 644 $ETC_DIR/$SCREEN_SRC | |
chown 0:0 $ETC_DIR/$SCREEN_SRC | |
fi | |
if [ -e $BACKUP_DIR/$SUDOERS_SRC ]; then | |
cp -f $BACKUP_DIR/$SUDOERS_SRC $ETC_DIR/ || { exit 1; } | |
chmod 440 $ETC_DIR/$SUDOERS_SRC | |
chown 0:0 $ETC_DIR/$SUDOERS_SRC | |
fi | |
if [ -e $BACKUP_DIR/$LIGHTTPD_SRC ]; then | |
cp -f $BACKUP_DIR/$LIGHTTPD_SRC $ETC_DIR/ || { exit 1; } | |
chmod 644 $ETC_DIR/$LIGHTTPD_SRC | |
chown 0:0 $ETC_DIR/$LIGHTTPD_SRC | |
fi | |
if [ -e $BACKUP_DIR/$BASHPROF_SRC ]; then | |
cp -f $BACKUP_DIR/$BASHPROF_SRC $HOME_DIR/ || { exit 1; } | |
chmod 600 $HOME_DIR/$BASHPROF_SRC | |
chown mobile:mobile $HOME_DIR/$BASHPROF_SRC | |
fi | |
if [ -e $BACKUP_DIR/$BASHRC_SRC ]; then | |
cp -f $BACKUP_DIR/$BASHRC_SRC $HOME_DIR/ || { exit 1; } | |
chmod 600 $HOME_DIR/$BASHRC_SRC | |
chown mobile:mobile $HOME_DIR/$BASHRC_SRC | |
fi | |
if [ -e $BACKUP_DIR/$PROFILE_SRC ]; then | |
cp -f $BACKUP_DIR/$PROFILE_SRC $HOME_DIR/ || { exit 1; } | |
chmod 600 $HOME_DIR/$PROFILE_SRC | |
chown mobile:mobile $HOME_DIR/$PROFILE_SRC | |
fi | |
break;; | |
[nN]) | |
break;; | |
esac | |
done | |
echo "" | |
echo "Fixing user directory's permissions..." | |
chown -R mobile:mobile $HOME_DIR | |
echo "" | |
# echo "" | |
echo "Restore complete, please REBOOT your device." | |
echo "" | |
} | |
#### MAIN ROUTINE #### | |
while getopts brO: OPT | |
do | |
case $OPT in | |
"b" ) | |
mode="b";; | |
"r" ) | |
mode="r";; | |
"O" ) | |
out_dir="$OPTARG";; | |
* ) | |
usage | |
exit 1;; | |
esac | |
done | |
if [ "$mode" = "b" ]; then | |
backup_files | |
elif [ "$mode" = "r" ]; then | |
restore_files | |
else | |
echo "Invalid option: $OPT" | |
usage || { exit 1; } | |
fi | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
インデントぐちゃぐちゃや……