#!/bin/bash export PATH=/sbin:/usr/sbin:/bin:/usr/bin printf '#\n' printf '# Quantron backup script STARTING...\n' systemctl stop codesys3-rt.service export TERM=linux exec 0<>/dev/tty0 1>&0 2>&0 clear printf '#\n' printf '# Welcome to the QUANTRON backup\n' printf '#\n' is_usbstick_mounted() { grep -q -E \ '[[:space:]]+/media/usb0[[:space:]]+(fat|vfat|ntfs|ext4)[[:space:]]+(rw|ro),' \ '/proc/self/mounts' return $? } do_menu() { printf ' * Menu:\n' printf ' - Press key for abort\n' # key="A" printf ' - Press key for backup\n' # key="C" printf ' - Press key for restore\n' # key="D" key="" for ((;;)) ; do printf '0\n' >'/sys/devices/platform/imx21-fb.0/graphics/fb0/blank' IFS="" read -e -r -u0 -N1 key case "$key" in A) printf '# Aborting...\n' exit 0 ;; C) printf '# Starting backup...' do_backup exit 0 ;; D) printf '# Starting restore...' do_restore exit 0 ;; esac done } do_backup() { if ! is_usbstick_mounted ; then printf '# ERROR: No USB stick mounted, aborting\n' exit 1 fi if ! /sbin/eag_usbstick mount_writeable ; then printf '# ERROR: Cannot mount stick writeable, aborting\n' fi mkdir -p /media/usb0/quantron_backup set -o pipefail (( backuperr=0 )) (cd / ; tar -cvf - var/dyn/) | \ bzip2 -9 | \ tee \ >(md5sum /dev/stdin | sed 's/\/dev\/stdin/quantron_var_dyn_backup.tar.bz2/' >/media/usb0/quantron_backup/quantron_var_dyn_backup.tar.bz2.md5sum) \ >/media/usb0/quantron_backup/quantron_var_dyn_backup.tar.bz2 (( backuperr+=$? )) sync ; sync # UNIX tradition! /sbin/eag_usbstick mount_readonly (( backuperr+=$? )) if (( backuperr == 0 )) ; then printf '#\n# Backup success.\n#\n' else printf '#\n# Backup FAILED!!\n#\n' fi exit 0 } do_restore() { true } do_menu # EOF.