1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
#!/bin/bash
# Script to wrap phablet-flash
#
# Script does the following:-
# * Backup (cookies etc) but not photos/videos
# * Flash device (via phablet-flash)
# * Add applications from collections PPA
# * Restore data
# * Reboot
#
# Assumptions:-
# * Device already running some build of Ubuntu Touch and is connected via USB
# * You're on Wifi and want the device to be on the same Wifi network
#
# (c) 2013 Canonical - Alan Pope alan.pope@canonical.com
UBUNTU_ROOT="/data/ubuntu"
BACKUP_LOCATION="$HOME/Downloads"
DATESTAMP=`date +%Y%m%d`-`date +%H%M%S`
function adb_root {
echo ":: Run adb root"
adb root
if [ $? -ne "0" ]; then
echo ":: adb root failed"
exit 1
fi
}
function pause {
echo ":: Wait $1"
sleep $1
}
function wait_for_device {
echo -n ":: Waiting for device to come back ."
STATE="unknown"
while [ "$STATE" == "unknown" ];
do
echo -n "."
STATE=`adb get-state`
sleep 15
done
echo " "
}
echo ":: Build script to do backup"
TMP_FILE=$(mktemp)
adb_root
pause 5
echo ":: Delete old zip files to possibly regain space from /sdcard"
adb shell rm -r /sdcard/*.zip
cat > $TMP_FILE << 'EOF'
#!/bin/bash
/bin/tar zcf /home/phablet.tgz --exclude=/home/phablet/Pictures/* --exclude=/home/phablet/Videos/* /home/phablet
EOF
echo ":: Run backup"
adb push $TMP_FILE $UBUNTU_ROOT/$TMP_FILE
adb shell chmod 755 $UBUNTU_ROOT/$TMP_FILE
adb shell chroot $UBUNTU_ROOT $UBUNTU_ROOT/$TMP_FILE
echo ":: Download backup to this computer"
adb pull $UBUNTU_ROOT/home/phablet.tgz $BACKUP_LOCATION/phablet.tgz
mv $BACKUP_LOCATION/phablet.tgz $BACKUP_LOCATION/$DATESTAMP-phablet.tgz
ls -l $BACKUP_LOCATION/$DATESTAMP-phablet.tgz
file $BACKUP_LOCATION/$DATESTAMP-phablet.tgz
echo ":: Delete backup file from device"
adb shell rm -r $UBUNTU_ROOT/home/phablet.tgz
echo ":: Flash device"
phablet-flash
FLASH_RESULT=$?
if [ $FLASH_RESULT == "0" ]; then
echo ":: Flash success"
else
echo ":: Flash failed"
exit 1
fi
wait_for_device
# Setup network on device
adb_root
pause 5
echo ":: Setup network"
phablet-network-setup
pause 10
echo ":: Build script to do post-install tasks"
TMP_FILE=$(mktemp)
cat > $TMP_FILE << 'EOF'
#!/bin/bash
export PATH="/sbin:/usr/sbin:/bin:/usr/bin"
add-apt-repository -y ppa:ubuntu-touch-coreapps-drivers/collection
add-apt-repository -y ppa:ubuntu-touch-coreapps-drivers/daily
apt-get update
apt-get install --yes touch-collection touch-coreapps
perl -p -i -e 's/false/true/' /usr/share/qml-phone-shell/Dash/Apps/ApplicationsFilterGrid.qml
EOF
echo ":: Installing apps"
adb push $TMP_FILE $UBUNTU_ROOT/$TMP_FILE
adb shell chmod 755 $UBUNTU_ROOT/$TMP_FILE
adb shell chroot $UBUNTU_ROOT $UBUNTU_ROOT/$TMP_FILE
echo ":: Upload previously taken backup"
adb push $BACKUP_LOCATION/$DATESTAMP-phablet.tgz $UBUNTU_ROOT/home/phablet.tgz
if [ $? -ne "0" ]; then
echo ":: Restore to device failed. Manual restore of $BACKUP_$LOCATION/$DATESTAMP-phablet.tgz required"
exit 1
fi
echo ":: Build script to restore"
TMP_FILE=$(mktemp)
cat > $TMP_FILE << 'EOF'
#!/bin/bash
cd /
/bin/tar zxf /home/phablet.tgz
EOF
echo ":: Run restore script"
adb push $TMP_FILE $UBUNTU_ROOT/$TMP_FILE
adb shell chmod 755 $UBUNTU_ROOT/$TMP_FILE
adb shell chroot $UBUNTU_ROOT $UBUNTU_ROOT/$TMP_FILE
pause 10
echo ":: Reboot"
adb reboot
wait_for_device
echo ":: Delete old zip files to possibly regain space from /sdcard"
adb shell rm -r /sdcard/*.zip
echo ":: Done"
|