[PATCH] Backing up settings before an upgrade - first stab

Neil Jerram neil at ossau.homelinux.net
Sun Nov 18 22:04:12 CET 2012


---
 src/module_essentials.pri                  |    1 +
 src/settings/backup/backup.svg             |  115 ++++++++++++++++++++++++++++
 src/settings/backup/desktop/backup.desktop |    9 +++
 src/settings/backup/qbuild.pro             |   15 ++++
 src/settings/backup/scripts/backup.sh      |   77 +++++++++++++++++++
 5 files changed, 217 insertions(+)
 create mode 100644 src/settings/backup/backup.svg
 create mode 100644 src/settings/backup/desktop/backup.desktop
 create mode 100644 src/settings/backup/qbuild.pro
 create mode 100755 src/settings/backup/scripts/backup.sh

diff --git a/src/module_essentials.pri b/src/module_essentials.pri
index 9eeb26e..71df725 100644
--- a/src/module_essentials.pri
+++ b/src/module_essentials.pri
@@ -5,6 +5,7 @@ PROJECTS*=\
     3rdparty/applications/qx \
     3rdparty/applications/screenshot \
     3rdparty/applications/qterminal \
+    settings/backup \
     settings/light-and-power \
     settings/security \
     applications/calculator \
diff --git a/src/settings/backup/backup.svg b/src/settings/backup/backup.svg
new file mode 100644
index 0000000..f4ae7be
--- /dev/null
+++ b/src/settings/backup/backup.svg
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+	<!ENTITY ns_svg "http://www.w3.org/2000/svg">
+	<!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg  version="1.1" id="&#x56FE;&#x5C42;_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33.738" height="33.912"
+	 viewBox="0 0 33.738 33.912" style="overflow:visible;enable-background:new 0 0 33.738 33.912;" xml:space="preserve">
+<g>
+	
+		<linearGradient id="XMLID_11_" gradientUnits="userSpaceOnUse" x1="26.4502" y1="21.7085" x2="26.4502" y2="9.3337" gradientTransform="matrix(0.927 0.375 -0.375 0.9271 6.0237 -9.6258)">
+		<stop  offset="0" style="stop-color:#FFFFFF"/>
+		<stop  offset="0.0173" style="stop-color:#FBFBFB"/>
+		<stop  offset="0.2212" style="stop-color:#D5D5D5"/>
+		<stop  offset="0.423" style="stop-color:#B6B6B6"/>
+		<stop  offset="0.6197" style="stop-color:#A0A0A0"/>
+		<stop  offset="0.8092" style="stop-color:#939393"/>
+		<stop  offset="0.9831" style="stop-color:#8F8F8F"/>
+	</linearGradient>
+	<path style="fill:url(#XMLID_11_);stroke:#221815;stroke-width:0.25;" d="M33.23,7.067c0.646-1.596,0.444-3.31-0.375-4.651
+		l-1.557,3.848c-0.214,0.529-0.745,0.82-1.178,0.645l-3.792-1.533c-0.434-0.176-0.613-0.755-0.399-1.283l1.583-3.914
+		c-1.566,0.369-2.948,1.484-3.609,3.116c-0.662,1.638-0.441,3.403,0.435,4.761l-6.117,15.121l5.301,2.146l6.127-15.147
+		C31.203,9.796,32.574,8.689,33.23,7.067z"/>
+	
+		<radialGradient id="XMLID_12_" cx="24.5898" cy="6.6001" r="7.0516" gradientTransform="matrix(0.927 0.375 -0.375 0.9271 6.0237 -9.6258)" gradientUnits="userSpaceOnUse">
+		<stop  offset="0.7865" style="stop-color:#FFFFFF"/>
+		<stop  offset="0.8075" style="stop-color:#F3F3F3"/>
+		<stop  offset="0.8453" style="stop-color:#D4D4D4"/>
+		<stop  offset="0.8952" style="stop-color:#A1A1A1"/>
+		<stop  offset="0.9382" style="stop-color:#707070"/>
+	</radialGradient>
+	<path style="fill:url(#XMLID_12_);" d="M32.834,2.339l-0.789,2.073c0.553,1.236,0.543,1.539-0.028,2.904
+		c-0.513,1.225-0.837,2.086-1.902,2.633c1.35-0.474,2.508-1.508,3.096-2.957C33.856,5.396,33.654,3.683,32.834,2.339z"/>
+	
+		<radialGradient id="XMLID_13_" cx="22.4507" cy="6.9985" r="7.0493" gradientTransform="matrix(-0.927 -0.375 -0.375 0.9271 53.2245 9.0389)" gradientUnits="userSpaceOnUse">
+		<stop  offset="0.7865" style="stop-color:#FFFFFF"/>
+		<stop  offset="0.8075" style="stop-color:#F3F3F3"/>
+		<stop  offset="0.8453" style="stop-color:#D4D4D4"/>
+		<stop  offset="0.8952" style="stop-color:#A1A1A1"/>
+		<stop  offset="0.9382" style="stop-color:#707070"/>
+	</radialGradient>
+	<path style="fill:url(#XMLID_13_);" d="M23.969,3.253c-0.587,1.45-0.473,2.999,0.168,4.278c-0.386-1.135-0.02-1.978,0.463-3.215
+		c0.539-1.378,0.742-1.603,1.999-2.107l0.875-2.039C25.951,0.566,24.615,1.658,23.969,3.253z"/>
+	
+		<linearGradient id="XMLID_14_" gradientUnits="userSpaceOnUse" x1="26.6377" y1="12.3423" x2="26.419" y2="23.6544" gradientTransform="matrix(0.927 0.375 -0.375 0.9271 6.0237 -9.6258)">
+		<stop  offset="0" style="stop-color:#CCCCCC"/>
+		<stop  offset="0.9831" style="stop-color:#919191"/>
+	</linearGradient>
+	<polygon style="fill:url(#XMLID_14_);" points="22.777,24.7 19.286,23.288 24.63,10.077 28.095,11.512 	"/>
+	
+		<linearGradient id="XMLID_15_" gradientUnits="userSpaceOnUse" x1="29.2241" y1="53.1626" x2="29.3655" y2="56.3347" gradientTransform="matrix(0.9026 0.4301 -0.4302 0.9028 23.6638 -51.9398)">
+		<stop  offset="0" style="stop-color:#FFFFFF"/>
+		<stop  offset="0.9831" style="stop-color:#BDBDBD"/>
+	</linearGradient>
+	<path style="fill:url(#XMLID_15_);" d="M26.222,10.975c-0.701-0.268-1.583-0.878-1.583-0.878c0.322-1.576,0.061-1.639-0.327-2.357
+		c-0.559-1.035-0.598-1.605-0.598-1.605s3.306,4.285,7.758,2.985c0,0-0.867,0.729-1.854,0.918c-1.061,0.205-1.534,1.42-1.534,1.42
+		S26.924,11.241,26.222,10.975z"/>
+	
+		<linearGradient id="XMLID_16_" gradientUnits="userSpaceOnUse" x1="26.5283" y1="7.1909" x2="26.5283" y2="5.8917" gradientTransform="matrix(0.927 0.375 -0.375 0.9271 6.0237 -9.6258)">
+		<stop  offset="0" style="stop-color:#FFFFFF"/>
+		<stop  offset="0.042" style="stop-color:#F1F1F1"/>
+		<stop  offset="0.1755" style="stop-color:#CACACA"/>
+		<stop  offset="0.3137" style="stop-color:#A9A9A9"/>
+		<stop  offset="0.4557" style="stop-color:#909090"/>
+		<stop  offset="0.6029" style="stop-color:#7E7E7E"/>
+		<stop  offset="0.7589" style="stop-color:#747474"/>
+		<stop  offset="0.9382" style="stop-color:#707070"/>
+	</linearGradient>
+	<path style="fill:url(#XMLID_16_);" d="M30.691,8.011c-0.271,0.127-5.311-1.828-5.452-2.188c-0.141-0.361,0.55-1.363,0.55-1.363
+		l0.198,0.805l4.264,1.792l0.97-0.398C31.221,6.659,30.96,7.885,30.691,8.011z"/>
+</g>
+<g>
+	
+		<linearGradient id="XMLID_17_" gradientUnits="userSpaceOnUse" x1="-7.6768" y1="-39.7275" x2="-2.9885" y2="-41.6935" gradientTransform="matrix(0.9968 -0.0791 0.0791 0.9968 20.0475 59.9222)">
+		<stop  offset="0.0056" style="stop-color:#424242"/>
+		<stop  offset="0.3202" style="stop-color:#FFFFFF"/>
+		<stop  offset="0.736" style="stop-color:#CCCCCC"/>
+		<stop  offset="1" style="stop-color:#424242"/>
+	</linearGradient>
+	<path style="fill:url(#XMLID_17_);stroke:#000000;stroke-width:0.25;" d="M3.49,9.391c0,0,10.073,20.938,11.994,23.47
+		c1.924,2.532,9.786-0.574,10.376-3.964c0.596-3.392-14.356-26.425-14.356-26.425s-2.28-0.016-3.339,0.627
+		C7.398,3.559,4.957,4.916,4.64,5.398C4.325,5.878,3.49,9.391,3.49,9.391z"/>
+	
+		<linearGradient id="XMLID_18_" gradientUnits="userSpaceOnUse" x1="-8.2856" y1="-42.833" x2="8.3242" y2="-42.833" gradientTransform="matrix(0.9968 -0.0791 0.0791 0.9968 20.0475 59.9222)">
+		<stop  offset="0.1067" style="stop-color:#ECECEC"/>
+		<stop  offset="0.3202" style="stop-color:#FFFFFF"/>
+		<stop  offset="0.736" style="stop-color:#CCCCCC"/>
+		<stop  offset="1" style="stop-color:#424242"/>
+	</linearGradient>
+	<path style="fill:url(#XMLID_18_);stroke:#000000;stroke-width:0.25;" d="M7.734,3.48c0,0,1.136-1.001,3.13-1.416
+		c1.993-0.41,3.19-0.655,4.35,0.568c1.166,1.227,6.419,12.563,8.67,17.956c0,0,3.049,7.109,1.555,9.355
+		c-1.496,2.245-4.314,3.737-5.941,1.79C17.877,29.783,9.562,9.866,8.571,7.566C7.578,5.265,6.824,4.158,7.734,3.48z"/>
+	
+		<linearGradient id="XMLID_19_" gradientUnits="userSpaceOnUse" x1="-6.4019" y1="-46.001" x2="6.8828" y2="-46.001" gradientTransform="matrix(0.9968 -0.0791 0.0791 0.9968 20.0475 59.9222)">
+		<stop  offset="0" style="stop-color:#F3E855"/>
+		<stop  offset="0.9831" style="stop-color:#F3B711"/>
+	</linearGradient>
+	<path style="fill:url(#XMLID_19_);stroke:#000000;stroke-width:0.25;" d="M9.697,7.173c-0.439-1.131-0.819-2.058,1.117-2.567
+		c1.937-0.508,4.549-1.352,5.104-0.655c1.18,1.473,7.028,13.391,7.878,16.799c0.268,1.062-0.03,1.522-1.184,1.662
+		c-0.716,0.093-1.178-0.156-2.101,0.982c-0.922,1.135-2.374,1.352-3.113,0.347C16.111,21.986,10.138,8.304,9.697,7.173z"/>
+	
+		<linearGradient id="XMLID_20_" gradientUnits="userSpaceOnUse" x1="-27.4209" y1="-34.5669" x2="-24.8026" y2="-35.7753" gradientTransform="matrix(0.9023 0.0193 -0.0158 0.7697 26.1167 31.89)">
+		<stop  offset="0.0056" style="stop-color:#4F4F4F"/>
+		<stop  offset="0.3202" style="stop-color:#FFFFFF"/>
+		<stop  offset="0.736" style="stop-color:#CCCCCC"/>
+		<stop  offset="1" style="stop-color:#424242"/>
+	</linearGradient>
+	<path style="fill:url(#XMLID_20_);stroke:#000000;stroke-width:0.25;" d="M0.331,1.885c0,0-0.371-0.68,0.478-1.152
+		C1.028,0.61,1.018,0.618,1.574,0.385C1.947,0.229,2.695,0.25,3.127,1.094C3.549,1.91,5.803,6.361,5.803,6.361
+		s0.349,0.826-0.485,1.432C4.486,8.395,3.933,8.579,3.572,8.375C3.215,8.175,0.331,1.885,0.331,1.885z"/>
+	<path style="fill:#98C724;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;" d="M11.114,7.772
+		c0,0,4.065-1.135,5.195-1.577l5.606,11.918l-4.782,2.308L11.114,7.772z"/>
+</g>
+<rect y="0.07" style="fill:none;" width="33.667" height="33.667"/>
+</svg>
diff --git a/src/settings/backup/desktop/backup.desktop b/src/settings/backup/desktop/backup.desktop
new file mode 100644
index 0000000..ec0e437
--- /dev/null
+++ b/src/settings/backup/desktop/backup.desktop
@@ -0,0 +1,9 @@
+[Translation]
+File=QtopiaApplications
+Context=PowerManagerServices
+[Desktop Entry]
+Comment[]=Backup settings before an upgrade
+Exec=backup.sh
+Icon=backup/backup
+Type=ConsoleApplication
+Name[]=Backup Settings
diff --git a/src/settings/backup/qbuild.pro b/src/settings/backup/qbuild.pro
new file mode 100644
index 0000000..a361038
--- /dev/null
+++ b/src/settings/backup/qbuild.pro
@@ -0,0 +1,15 @@
+script.files=scripts/*
+script.path=/bin
+script.hint=script
+INSTALLS+=script
+
+desktop.files+=desktop/backup.desktop
+
+desktop.path=/apps/Settings
+desktop.hint=desktop
+INSTALLS+=desktop
+
+pics.files=*.svg
+pics.path=/pics/backup
+pics.hint=pics
+INSTALLS+=pics
diff --git a/src/settings/backup/scripts/backup.sh b/src/settings/backup/scripts/backup.sh
new file mode 100755
index 0000000..6c8f2d9
--- /dev/null
+++ b/src/settings/backup/scripts/backup.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+# TODO:
+#
+# Identify user-installed packages and offer to reinstall these after
+# an upgrade.  (In my case: rsync, sgt-puzzles.)
+
+INCL=`cat <<EOF
+/etc/ssh/*key*
+/home/root
+/home/root/Applications/Network/config
+/home/root/Applications/qtopiamail
+EOF
+`
+EXCL=`cat <<EOF
+/home/root/.mplayer/config
+/home/root/.pulse
+/home/root/.pulse-cookie
+/home/root/Applications
+/home/root/Applications/qtopiamail/temp
+EOF
+`
+echo INCL:
+for i in $INCL; do echo $i; done
+
+echo EXCL:
+for e in $EXCL; do echo $e; done
+
+BDIR=/media/card/Backup/`date +%F`
+echo Backing up to $BDIR
+mkdir -p $BDIR
+
+backup ()
+{
+    incl_root=$1
+    file=$2
+    do_backup=true
+
+    for e in $EXCL; do
+	case $incl_root in
+	    ${e}/* )
+                # Include root is more specific than exclusion, so
+                # overrides it.
+                ;;
+	    * )
+	        # Include root does not override this exclusion.
+	        case $file in
+		    $e | ${e}/* )
+		        # Don't backup this file.
+		        do_backup=false
+			;;
+		esac
+		;;
+	esac
+    done
+
+    if $do_backup; then
+	echo -en ${file}\\0000
+    fi
+}
+
+for i in $INCL; do
+
+    if test -f $i; then
+	backup $i $i
+    elif test -d $i; then
+	OIFS="$IFS"
+	IFS=$'\n' 
+	for f in `find $i -type f`; do
+	    backup $i "$f"
+	done
+	IFS="$OIFS"
+    else
+	echo "E: Don't know how to backup $i" >&2
+    fi
+
+done | xargs -0 tar -rf $BDIR/files.tar
-- 
1.7.10.4


--=-=-=--



More information about the community mailing list