[Sugar-devel] [PATCH] Enhancements to dsd's restore and backup script (v2)

Martin Abente mabente at paraguayeduca.org
Fri May 21 15:42:09 EDT 2010


The current script was not able to run on non-xo machines, plus a few
improvements to the scripts, i.e makefiles and copyright amends.

This version fixes the sugar/bin makefile

Signed-off-by: Martin Abente <mabente at paraguayeduca.org>
---
 bin/Makefile.am                       |    8 +++-
 bin/journal-backup-volume             |   63 +++++++++++++++++++++++++++
 bin/journal-restore-volume            |   77 +++++++++++++++++++++++++++++++++
 src/jarabe/model/processmanagement.py |    5 ++-
 4 files changed, 150 insertions(+), 3 deletions(-)
 create mode 100755 bin/journal-backup-volume
 create mode 100755 bin/journal-restore-volume

diff --git a/bin/Makefile.am b/bin/Makefile.am
index 05a9215..dc151af 100644
--- a/bin/Makefile.am
+++ b/bin/Makefile.am
@@ -5,10 +5,14 @@ python_scripts =		\
 	sugar-install-bundle	\
 	sugar-launch		\
 	sugar-session		\
-	sugar-ui-check
+	sugar-ui-check \
+	#
 
 bin_SCRIPTS = 			\
 	sugar			\
-	$(python_scripts)
+	journal-backup-volume \
+	journal-restore-volume \
+	$(python_scripts) \
+	#
 
 EXTRA_DIST = $(python_scripts) sugar.in
diff --git a/bin/journal-backup-volume b/bin/journal-backup-volume
new file mode 100755
index 0000000..fd25585
--- /dev/null
+++ b/bin/journal-backup-volume
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+# Copyright (C) 2010 Plan Ceibal
+# Copyright (C) 2010 Paraguay Educa
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Contact information: comunidad at plan.ceibal.edu.uy
+# Plan Ceibal http://www.ceibal.edu.uy
+
+# This shell script makes a sugar journal backup
+
+if [ -z "$1" ]; then
+	echo "Usage: $0 <backup destination>" >&2
+	exit 1 
+fi
+
+function validate_path() {
+	if [ ! -d "$1" ]; then
+		echo "No such file $1" >&2
+		exit 1
+	fi
+}
+
+SERIAL="$LOGNAME"
+[ -f /ofw/serial-number ] && SERIAL=$(cat /ofw/serial-number)
+DATASTORE="$HOME/.sugar/default/datastore/"
+validate_path $DATASTORE
+
+DEST_PATH=$1
+validate_path "$DEST_PATH"
+
+PATH_FILE="$DEST_PATH/backup/$SERIAL"
+
+pkill -f -x "python /usr/bin/datastore-service"
+sleep 1
+
+echo -n "Starting"
+mkdir -p $PATH_FILE
+
+echo -n "Switching to the working directory"
+cd $DATASTORE
+tar -zcf "$PATH_FILE"/datastore.tar.gz .
+if [ $? -ne 0 ]; then
+  echo "Error while packing datastore"
+  exit 1
+fi
+
+echo -n "Restart"
+sleep 2
+pkill -f -x "python /usr/bin/sugar-session"
+
diff --git a/bin/journal-restore-volume b/bin/journal-restore-volume
new file mode 100755
index 0000000..ba5120d
--- /dev/null
+++ b/bin/journal-restore-volume
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+# Copyright (C) 2010 Plan Ceibal
+# Copyright (C) 2010 Paraguay Educa
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Contact information: comunidad at plan.ceibal.edu.uy
+# Plan Ceibal http://www.ceibal.edu.uy
+
+# This script restore sugar journal from backup
+
+if [ -z "$1" ]; then
+	echo "Usage: $0 <backup origin>" >&2
+	exit 1 
+fi
+
+function controlError {
+	if [[ $? != 0 ]]; then
+		echo "$1" >&2
+		exit 1
+	fi
+}
+
+function validate_path() {
+	if !(test -e "$1"); then
+		echo "No such file $1" >&2;
+		exit 1 
+	fi
+}
+
+SERIAL="$LOGNAME"
+[ -f /ofw/serial-number ] && SERIAL=$(cat /ofw/serial-number)
+DATASTORE="$HOME/.sugar/default/datastore/"
+validate_path $DATASTORE
+
+SRC_PATH=$1
+validate_path $SRC_PATH
+
+PATH_FILE=$SRC_PATH/backup/$SERIAL/datastore.tar.gz
+validate_path $PATH_FILE
+
+echo -n "Starting"
+pkill -f -x "python /usr/bin/datastore-service"
+sleep 1
+
+echo -n "Moving to the working directory"
+cp $PATH_FILE $DATASTORE
+controlError "Error while copying the files"
+cd $DATASTORE
+
+rm -rf "$DATASTORE"store/*
+controlError ""
+
+echo -n "Unpacking"
+tar -xvzf $PATH_FILE
+controlError "Error while unpacking "$PATH_FILE
+rm "$DATASTORE"datastore.tar.gz
+controlError "Error while deleting temporal files"
+
+
+echo -n "Restarting"
+sleep 2
+
+pkill -f -x "python /usr/bin/sugar-session"
+
diff --git a/src/jarabe/model/processmanagement.py b/src/jarabe/model/processmanagement.py
index 102bdca..9c7ccf0 100644
--- a/src/jarabe/model/processmanagement.py
+++ b/src/jarabe/model/processmanagement.py
@@ -1,5 +1,5 @@
-# Copyright (C) 2010, Plan Ceibal <comunidad at plan.ceibal.edu.uy>
 # Copyright (C) 2010 Paraguay Educa, Martin Abente, Bernie Innocenti
+# Copyright (C) 2010, Plan Ceibal <comunidad at plan.ceibal.edu.uy>
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -14,6 +14,9 @@
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+# Contact information mabente at paraguayeduca.org
+# Paraguay Educa http://www.paraguayeduca.org
 
 import os
 import gobject
-- 
1.6.0.4



More information about the Sugar-devel mailing list