Merge branch 'vuplus_experimental' of code.vuplus.com:/opt/repository/dvbapp into...
[vuplus_dvbapp] / lib / python / Plugins / Extensions / BackupSuiteHDD / backupsuite.sh
diff --git a/lib/python/Plugins/Extensions/BackupSuiteHDD/backupsuite.sh b/lib/python/Plugins/Extensions/BackupSuiteHDD/backupsuite.sh
new file mode 100755 (executable)
index 0000000..a3a1c6b
--- /dev/null
@@ -0,0 +1,250 @@
+###############################################################################
+#         FULL BACKUP UYILITY FOR ORIGINAL IMAGE FOR ALL VU+ MODELS           #
+#        VU+ UNO, VU+ SOLO, VU+ SOLO2, VU+ DUO, VU+ ULTIMO, VU+ DUO2          #
+#                   MAKES A FULLBACK-UP READY FOR FLASHING.                   #
+#                                                                             #
+#                   Pedro_Newbie (backupsuite@outlook.com)                    #
+###############################################################################
+#
+#!/bin/sh
+
+
+###################### DEFINE CLEAN-UP ROUTINE ################################
+clean_up()
+{
+umount /tmp/bi/root > /dev/null 2>&1
+rmdir /tmp/bi/root > /dev/null 2>&1
+rmdir /tmp/bi > /dev/null 2>&1
+rm -rf "$WORKDIR" > /dev/null 2>&1
+}
+
+###################### BIG OOPS!, HOLY SH... (SHELL SCRIPT :-))################
+big_fail()
+{
+       clean_up
+       $SHOW "message15"               # Image creation FAILED!
+       exit 0
+}
+##### I QUIT #####
+
+
+########################## DECLARATION OF VARIABLES ###########################
+VERSION="Version 12.5 for VU+ Original Image 2.1 - 06-08-2013"
+START=$(date +%s)
+MEDIA="$1"
+DATE=`date +%Y%m%d_%H%M`
+IMAGEVERSION=`date +%Y%m%d`
+MKFS=/usr/sbin/mkfs.ubifs
+NANDDUMP=/usr/sbin/nanddump
+UBINIZE=/usr/sbin/ubinize
+WORKDIR="$MEDIA/bi"
+TARGET="XX"
+UBINIZE_ARGS="-m 2048 -p 128KiB"
+
+
+################### START THE LOGFILE /tmp/BackupSuite.log ####################
+echo "Plugin version     = $VERSION" > /tmp/BackupSuite.log
+echo "Back-up media      = $MEDIA" >> /tmp/BackupSuite.log
+df -h "$MEDIA"  >> /tmp/BackupSuite.log
+echo "Back-up date_time  = $DATE" >> /tmp/BackupSuite.log
+echo "Working directory  = $WORKDIR" >> /tmp/BackupSuite.log
+
+######################### TESTING FOR UBIFS OR JFFS2 ##########################
+if grep rootfs /proc/mounts | grep ubifs > /dev/null; then     
+       ROOTFSTYPE=ubifs
+else
+       $SHOW "message01"                       #NO UBIFS, THEN JFFS2 BUT NOT SUPPORTED ANYMORE
+       big_fail
+fi
+
+####### TESTING IF ALL THE TOOLS FOR THE BUILDING PROCESS ARE PRESENT #########
+if [ ! -f $NANDDUMP ] ; then
+       echo -n "$NANDDUMP " ; $SHOW "message05"        # nanddump not found.
+       echo "NO NANDDUMP FOUND, ABORTING" >> /tmp/BackupSuite.log
+       big_fail
+fi
+if [ ! -f $MKFS ] ; then
+       echo -n "$MKFS " ; $SHOW "message05"            # mkfs.ubifs not found.
+       echo "NO MKFS.UBIFS FOUND, ABORTING" >> /tmp/BackupSuite.log
+       big_fail
+fi
+if [ ! -f $UBINIZE ] ; then
+       echo -n "$UBINIZE " ; $SHOW "message05"         # ubinize not found.
+       echo "NO UBINIZE FOUND, ABORTING" >> /tmp/BackupSuite.log
+       big_fail
+fi
+
+########## TESTING WHICH BRAND AND MODEL SATELLITE RECEIVER IS USED ###########
+if [ -f /proc/stb/info/vumodel ] ; then
+       MODEL=$( cat /proc/stb/info/vumodel )
+       MKUBIFS_ARGS="-m 2048 -e 126976 -c 4096 -F"
+       SHOWNAME="Vu+ $MODEL"
+       MAINDEST="$MEDIA/fullbackup_OI_2.1_$MODEL/$DATE/vuplus/$MODEL"
+       EXTRA="$MEDIA/vuplus"
+       echo "Destination        = $MAINDEST" >> /tmp/BackupSuite.log
+######################### NO SUPPORTED RECEIVER FOUND #########################
+else
+       $SHOW "message01"               # No supported receiver found!
+       big_fail
+fi
+
+############# START TO SHOW SOME INFORMATION ABOUT BRAND & MODEL ##############
+echo
+echo -n "$SHOWNAME " | tr  a-z A-Z     # Shows the receiver brand and model
+$SHOW "message02"                                      # BACK-UP TOOL FOR MAKING A COMPLETE BACK-UP 
+echo
+echo "$VERSION"
+echo "Pedro_Newbie (e-mail: backupsuite@outlook.com)"
+echo
+$SHOW "message03"      # Please be patient, ... will take about 5-7 minutes 
+echo " "
+
+#exit 0  #USE FOR DEBUGGING/TESTING
+
+
+##################### PREPARING THE BUILDING ENVIRONMENT ######################
+rm -rf "$WORKDIR"              # GETTING RID OF THE OLD REMAINS IF ANY
+echo "Remove directory   = $WORKDIR" >> /tmp/BackupSuite.log
+mkdir -p "$WORKDIR"            # MAKING THE WORKING FOLDER WHERE EVERYTHING HAPPENS
+echo "Recreate directory = $WORKDIR" >> /tmp/BackupSuite.log
+mkdir -p /tmp/bi/root
+echo "Create directory   = /tmp/bi/root" >> /tmp/BackupSuite.log
+sync
+mount --bind / /tmp/bi/root
+
+
+####################### START THE REAL BACK-UP PROCESS ########################
+#------------------------------------------------------------------------------
+############################# MAKING UBINIZE.CFG ##############################
+echo \[ubifs\] > "$WORKDIR/ubinize.cfg"
+echo mode=ubi >> "$WORKDIR/ubinize.cfg"
+echo image="$WORKDIR/root.ubi" >> "$WORKDIR/ubinize.cfg"
+echo vol_id=0 >> "$WORKDIR/ubinize.cfg"
+echo vol_type=dynamic >> "$WORKDIR/ubinize.cfg"
+echo vol_name=rootfs >> "$WORKDIR/ubinize.cfg"
+echo vol_flags=autoresize >> "$WORKDIR/ubinize.cfg"
+echo " " >> /tmp/BackupSuite.log
+echo "UBINIZE.CFG CREATED WITH THE CONTENT:"  >> /tmp/BackupSuite.log
+cat "$WORKDIR/ubinize.cfg"  >> /tmp/BackupSuite.log
+touch "$WORKDIR/root.ubi"
+chmod 644 "$WORKDIR/root.ubi"
+echo "--------------------------" >> /tmp/BackupSuite.log
+
+#############################  MAKING ROOT.UBI(FS) ############################
+$SHOW "message06a"                                             #Create: root.ubifs
+echo "Start creating root.ubi"  >> /tmp/BackupSuite.log
+$MKFS -r /tmp/bi/root -o "$WORKDIR/root.ubi" $MKUBIFS_ARGS
+if [ -f "$WORKDIR/root.ubi" ] ; then
+       echo "ROOT.UBI MADE:" >> /tmp/BackupSuite.log
+       ls -e1 "$WORKDIR/root.ubi" >> /tmp/BackupSuite.log
+else 
+       echo "$WORKDIR/root.ubi NOT FOUND"  >> /tmp/BackupSuite.log
+       big_fail
+fi
+
+echo "Start UBINIZING" >> /tmp/BackupSuite.log
+$UBINIZE -o "$WORKDIR/root.ubifs" $UBINIZE_ARGS "$WORKDIR/ubinize.cfg" >/dev/null
+chmod 644 "$WORKDIR/root.ubifs"
+if [ -f "$WORKDIR/root.ubifs" ] ; then
+       echo "ROOT.UBIFS MADE:" >> /tmp/BackupSuite.log
+       ls -e1 "$WORKDIR/root.ubifs" >> /tmp/BackupSuite.log
+else 
+       echo "$WORKDIR/root.ubifs NOT FOUND"  >> /tmp/BackupSuite.log
+       big_fail
+fi
+
+############################## MAKING KERNELDUMP ##############################
+echo "Start creating kerneldump" >> /tmp/BackupSuite.log
+$SHOW "message07"                                                      # Create: kerneldump
+if [ $MODEL = "solo2" ] || [ $MODEL = "duo2" ]; then
+       $NANDDUMP /dev/mtd2 -q > "$WORKDIR/vmlinux.gz"
+else 
+       $NANDDUMP /dev/mtd1 -q > "$WORKDIR/vmlinux.gz"
+fi
+if [ -f "$WORKDIR/vmlinux.gz" ] ; then
+       echo "VMLINUX.GZ MADE:" >> /tmp/BackupSuite.log
+       ls -e1 "$WORKDIR/vmlinux.gz" >> /tmp/BackupSuite.log
+else 
+       echo "$WORKDIR/vmlinux.gz NOT FOUND"  >> /tmp/BackupSuite.log
+       big_fail
+fi
+echo "--------------------------" >> /tmp/BackupSuite.log
+
+############ MOVING THE BACKUP TO THE RIGHT PLACE(S) ##########################
+mkdir -p "$MAINDEST"
+echo "Created directory  = $MAINDEST"  >> /tmp/BackupSuite.log
+if [ $MODEL = "solo2" ] || [ $MODEL = "duo2" ]; then
+       mv "$WORKDIR/root.ubifs" "$MAINDEST/root_cfe_auto.bin"
+else
+       mv "$WORKDIR/root.ubifs" "$MAINDEST/root_cfe_auto.jffs2"
+fi
+mv "$WORKDIR/vmlinux.gz" "$MAINDEST/kernel_cfe_auto.bin"
+if [ $MODEL != "solo" -a $MODEL != "duo" ]; then
+       touch "$MAINDEST/reboot.update"  
+fi
+if [ -f "$MAINDEST/root_cfe_auto"* -a -f "$MAINDEST/kernel_cfe_auto.bin" ] ; then
+       echo " "  >> /tmp/BackupSuite.log
+       echo "BACK-UP MADE SUCCESSFULLY IN: $MAINDEST"  >> /tmp/BackupSuite.log
+       echo " "
+       $SHOW "message10" ; echo "$MAINDEST"    # USB Image created in: 
+       $SHOW "message23"               # "The content of the folder is:"
+       ls "$MAINDEST" -e1h | awk {'print $3 "\t" $7'}
+       ls -e1 "$MAINDEST" >> /tmp/BackupSuite.log
+       echo " "
+else
+       big_fail
+fi
+
+#HERE NEW PART ABOUT NO FOLDER VUPLUS/MODEL WHEN MADE ON HARDDISK OR REPLACEMENT
+if  [ $HARDDISK != 1 ]; then
+       mkdir -p "$EXTRA/$MODEL"
+       echo "Created directory  = $EXTRA/$MODEL" >> /tmp/BackupSuite.log
+       cp -r "$MAINDEST" "$EXTRA"                                              #copy the made back-up to images
+       $SHOW "message11" ; echo "$EXTRA/$MODEL"                # and there is made an extra copy in:
+fi
+
+echo " "
+$SHOW "message12"              # directions for restoring the image for a vu+
+
+#################### CHECKING FOR AN EXTRA BACKUP STORAGE #####################
+if  [ $HARDDISK = 1 ]; then                                            # looking for a valid usb-stick
+       for candidate in /media/sd* /media/mmc* /media/usb* /media/*
+       do
+               if [ -f "${candidate}/"*[Bb][Aa][Cc][Kk][Uu][Pp][Ss][Tt][Ii][Cc][Kk]* ]
+               then
+               TARGET="${candidate}"
+               fi    
+       done
+       if [ "$TARGET" != "XX" ] ; then
+               echo " "
+               $SHOW "message17"       # Valid USB-flashdrive detected, making an extra copy
+               echo " "
+               TOTALSIZE="$(df -h "$TARGET" | tail -n 1 | awk {'print $2'})"
+               FREESIZE="$(df -h "$TARGET" | tail -n 1 | awk {'print $4'})"
+               $SHOW "message09" ; echo -n "$TARGET ($TOTALSIZE, " ; $SHOW "message16" ; echo "$FREESIZE)"
+               rm -rf "$TARGET/vuplus/$MODEL"
+               mkdir -p "$TARGET/vuplus/$MODEL"
+               cp -r "$MAINDEST" "$TARGET/vuplus/"
+               echo " " >> /tmp/BackupSuite.log
+               echo "MADE AN EXTRA COPY IN: $TARGET" >> /tmp/BackupSuite.log
+               df -h "$TARGET"  >> /tmp/BackupSuite.log
+               sync
+               $SHOW "message19"       # Backup finished and copied to your USB-flashdrive
+       fi
+fi
+######################### END OF EXTRA BACKUP STORAGE #########################
+
+
+################## CLEANING UP AND REPORTING SOME STATISTICS ##################
+clean_up
+END=$(date +%s)
+DIFF=$(( $END - $START ))
+MINUTES=$(( $DIFF/60 ))
+SECONDS=$(( $DIFF-(( 60*$MINUTES ))))
+if [ $SECONDS -le  9 ] ; then 
+       SECONDS="0$SECONDS"
+fi
+$SHOW "message24"  ; echo -n "$MINUTES.$SECONDS " ; $SHOW "message25"
+echo "BACKUP FINISHED IN $MINUTES.$SECONDS MINUTES" >> /tmp/BackupSuite.log
+exit 
+#-----------------------------------------------------------------------------
\ No newline at end of file