Advertisement
tetam

automatic_fullbackup.sh

Apr 2nd, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.02 KB | None | 0 0
  1. #!/bin/sh
  2. # creator of the script Pedro_Newbie (http://forums.openpli.org)
  3.  
  4. VERSION="Version 3.9 - 11/08/2015\ncreator of the script Pedro_Newbie (http://forums.openpli.org)\n"
  5. DIRECTORY="$1"
  6. START=$(date +%s)
  7. DATE=`date +%Y%m%d_%H%M`
  8. IMAGEVERSION=`date +%Y%m%d`
  9. MKFS=/usr/sbin/mkfs.ubifs
  10. UBINIZE=/usr/sbin/ubinize
  11. NANDDUMP=/usr/sbin/nanddump
  12. WORKDIR="$DIRECTORY/bi"
  13.  
  14. echo "Plugin version = $VERSION\n"
  15. echo "Back-up media = $DIRECTORY\n"
  16. df -h "$DIRECTORY"
  17. echo "Back-up date_time = $DATE\n"
  18. echo "Working directory = $WORKDIR\n"
  19. CREATE_ZIP="$2"
  20. IMAGENAME="$3"
  21.  
  22. if grep rootfs /proc/mounts | grep ubifs > /dev/null; then
  23.     ROOTFSTYPE=ubifs
  24. else
  25.     echo "NO UBIFS, THEN JFFS2 BUT NOT SUPPORTED ANYMORE\n"
  26.     exit 0
  27. fi
  28.  
  29.  
  30.     ## TESTING THE XTREND, CLARK TECH AND XP MODELS
  31. if [ -f /proc/stb/info/boxtype ] ; then
  32.     MODEL=$( cat /proc/stb/info/boxtype )
  33.     if grep et /proc/stb/info/boxtype > /dev/null ; then
  34.         TYPE=ET
  35.         MKUBIFS_ARGS="-m 2048 -e 126976 -c 4096"
  36.         if [ $MODEL = "et10000" -o $MODEL = "et8000" -o $MODEL = "et8500" -o $MODEL = "et7000" -o $MODEL = "et7500" ] ; then
  37.             MKUBIFS_ARGS="-m 2048 -e 126976 -c 8192"
  38.         else
  39.             MODEL=${MODEL:0:3}x00
  40.         fi
  41.         UBINIZE_ARGS="-m 2048 -p 128KiB"
  42.         SHOWNAME="ET/ Xtrend $MODEL"
  43.         MAINDEST="$DIRECTORY/$MODEL"
  44.         EXTRA="$DIRECTORY/automatic_fullbackup/$DATE"
  45.         echo "Destination        = $MAINDEST\n"
  46.         if grep boot /proc/mtd > /dev/null ; then
  47.             exit 0
  48.         fi
  49.  
  50.     elif grep giga /proc/stb/info/boxtype > /dev/null ; then
  51.         TYPE=gigablue
  52.         MKUBIFS_ARGS = "-m 2048 -e 126976 -c 4000"
  53.         UBINIZE_ARGS = "-m 2048 -p 128KiB"
  54.         SHOWNAME="$MODEL HD Quad Plus"
  55.         MAINDEST="$DIRECTORY/gigablue/quadplus"
  56.         EXTRA="$DIRECTORY/automatic_fullbackup/$DATE/gigablue"
  57.         echo "Destination        = $MAINDEST\n"
  58.  
  59.     else
  60.         echo "No supported receiver found!\n"
  61.         exit 0
  62.     fi
  63.    
  64.  
  65.  
  66. ## TESTING IF ALL THE TOOLS FOR THE BUILDING PROCESS ARE PRESENT
  67. if [ ! -f $MKFS ] ; then
  68.     echo "NO MKFS.UBIFS FOUND, ABORTING\n"
  69.     exit 0
  70. fi
  71. if [ ! -f $NANDDUMP ] ; then
  72.     echo "NO NANDDUMP FOUND, ABORTING\n"
  73.     exit 0
  74. fi
  75. echo "Starting Full Backup!\nOptions control panel will not be available 2-15 minutes.\nPlease wait ..."
  76. echo "--------------------------"
  77.  
  78.  
  79. control_c(){
  80.    echo "Control C was pressed, quiting..."
  81.    umount /tmp/bi/root 2>/dev/null
  82.    rmdir /tmp/bi/root 2>/dev/null
  83.    rmdir /tmp/bi 2>/dev/null
  84.    rm -rf "$WORKDIR" 2>/dev/null
  85.    exit 255
  86. }
  87. trap control_c SIGINT
  88.  
  89. echo "\nWARNING!\n"
  90. echo "To stop creating a backup, press the Menu button.\n"
  91. sleep 2
  92.  
  93. ## PREPARING THE BUILDING ENVIRONMENT
  94. rm -rf "$WORKDIR"
  95. echo "Remove directory   = $WORKDIR\n"
  96. mkdir -p "$WORKDIR"
  97. echo "Recreate directory = $WORKDIR\n"
  98. mkdir -p /tmp/bi/root
  99. echo "Create directory   = /tmp/bi/root\n"
  100. sync
  101. mount --bind / /tmp/bi/root
  102.  
  103. echo \[ubifs\] > "$WORKDIR/ubinize.cfg"
  104. echo mode=ubi >> "$WORKDIR/ubinize.cfg"
  105. echo image="$WORKDIR/root.ubi" >> "$WORKDIR/ubinize.cfg"
  106. echo vol_id=0 >> "$WORKDIR/ubinize.cfg"
  107. echo vol_type=dynamic >> "$WORKDIR/ubinize.cfg"
  108. echo vol_name=rootfs >> "$WORKDIR/ubinize.cfg"
  109. echo vol_flags=autoresize >> "$WORKDIR/ubinize.cfg"
  110. echo "UBINIZE.CFG CREATED WITH THE CONTENT:\n"
  111. echo "$WORKDIR/ubinize.cfg\n"
  112. touch "$WORKDIR/root.ubi"
  113. chmod 644 "$WORKDIR/root.ubi"
  114. echo "--------------------------"
  115. echo "Start creating root.ubi\n"
  116. $MKFS -r /tmp/bi/root -o "$WORKDIR/root.ubi" $MKUBIFS_ARGS
  117. echo "Start UBINIZING\n"
  118. $UBINIZE -o "$WORKDIR/root.ubifs" $UBINIZE_ARGS "$WORKDIR/ubinize.cfg" >/dev/null
  119.  
  120. chmod 644 "$WORKDIR/root.ubifs"
  121. echo "Start creating kerneldump\n"
  122. if [ $MODEL = "gigablue" -o $MODEL = "duo2" -o $MODEL = "ini-8000am" ]; then
  123.     $NANDDUMP /dev/mtd2 -q > "$WORKDIR/vmlinux.gz"
  124. else
  125.     $NANDDUMP /dev/mtd2 -q > "$WORKDIR/vmlinux.gz"
  126. fi
  127.  
  128. TSTAMP="$(date "+%Y-%m-%d-%Hh%Mm")"
  129.  
  130.  
  131. if [ $TYPE = "gigablue" ] ; then
  132.     rm -rf "$MAINDEST"
  133.     echo "Removed directory  = $MAINDEST\n"
  134.     mkdir -p "$MAINDEST"
  135.     echo "Created directory  = $MAINDEST\n"
  136.     mv "$WORKDIR/root.ubifs" "$MAINDEST/rootfs.bin"
  137.     mv "$WORKDIR/vmlinux.gz" "$MAINDEST/kernel.bin"
  138.     echo "rename this file to 'force' to force an update without confirmation" > "$MAINDEST/noforce";
  139.     echo "$MODEL-$IMAGEVERSION" > "$MAINDEST/imageversion"
  140.     if [ -z "$CREATE_ZIP" ] ; then
  141.         mkdir -p "$EXTRA"
  142.         echo "Created directory  = $EXTRA\n"
  143.         cp -r "$MAINDEST" "$EXTRA"
  144.         touch "$DIRECTORY/automatic_fullbackup/.timestamp"
  145.     else
  146.         echo "Create zip archive..."
  147.         cd $DIRECTORY && $CREATE_ZIP -r $DIRECTORY/backup-$IMAGENAME-$MODEL-$TSTAMP.zip . -i /$MODEL/*
  148.         cd
  149.     fi
  150.     if [ -f "$MAINDEST/rootfs.bin" -a -f "$MAINDEST/kernel.bin" -a -f "$MAINDEST/imageversion" -a -f "$MAINDEST/noforce" ] ; then
  151.         echo " "
  152.         echo "BACK-UP MADE SUCCESSFULLY IN: $MAINDEST\n"
  153.     else
  154.         echo " "
  155.         echo "Image creation FAILED!\n"
  156.     fi
  157. fi
  158.  
  159. umount /tmp/bi/root
  160. rmdir /tmp/bi/root
  161. rmdir /tmp/bi
  162. rm -rf "$WORKDIR"
  163. sleep 5
  164. END=$(date +%s)
  165. DIFF=$(( $END - $START ))
  166. MINUTES=$(( $DIFF/60 ))
  167. SECONDS=$(( $DIFF-(( 60*$MINUTES ))))
  168. if [ $SECONDS -le  9 ] ; then
  169.     SECONDS="0$SECONDS"
  170. fi
  171. echo "BACKUP FINISHED IN $MINUTES.$SECONDS MINUTES\n"
  172. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement