Тема: F.A.Q.
Показать сообщение отдельно

Старый 05.05.2007, 00:41   #28
ФАКер
 
Аватар для lagush
 
lagush вне форума
Регистрация: 24.05.2006
Сообщений: 6,765
Отправить сообщение для lagush с помощью ICQ
По умолчанию

Gemini backup script
после того как очередной раз пропустил пару файлов делая ручной бэцкуп
перед заливкой нового имиджа наконецто созрел автоматизировать процэсс
chmod 755 /var/script/Gemini_E1_backup_userscript.sh
Код:
#!/bin/sh

### configuration

ENIGMA_ON=1
SERVICES_ON=1
GEMINI_CONFIG_ON=1
# !! Doesn't work with parameters where '/' presented in value string
GEMINI_CONFIG_LINES=""act_cam" "def_cam""
SKINS_ON=1
#SKIN_FILES=""josh3d" "chk_" "gemini_blueline""
SKIN_FILES=""josh3d""
LOCALES_ON=1
LOCALE_CODES=""lv" "ru""
SCRIPTS_ON=1
SCRIPT_FILES=""Gemini_E1_backup_userscript.sh" "Mount_userscript.sh" "reload_emu_names" "SetAudio_Left-Right_userscript""
CAMD3_ON=1
NEWCS_ON=1
MGCAMD_ON=1
USER_ON=1
USER_FILES=""/var/etc/ether-wake.conf" "/usr/lib/tuxbox/plugins/etherwake.""

# end

###################
foo="$0"
crntNameExt=${foo##*/}
crntNameShort=${crntNameExt%.*}
TAR_NAME="$crntNameShort"_`date +%Y.%m.%d`
DirTmp="/tmp/"
DirEtc="/var/etc/"
DirTuxbox="/var/tuxbox/"
DirEnigma="$DirTuxbox""config/enigma/"
DirBin="/var/bin/"
DirKeys="/var/keys/"
DirScript="/var/script/"
DirShare="/var/share/"

add_to_tarline () {
  if [ -e "$i" ]; then
	files2tar="$files2tar $i"
	echo "$i"
	echo "$i">>"$LogFile"
  else
	echo "!!! NOT FOUND:  $i"
	echo "!!! NOT FOUND:  $i">>"$LogFile"
  fi
}

print_bt_2_log () {
	echo ""
	echo "">>"$LogFile"
	echo "$BT:"
	echo "$BT:">>"$LogFile"
}

AUTORELOAD=0 files2tar=""

DM7020=0
if grep -qs 7020 /proc/bus/dreambox; then DM7020=1 DirShare="/usr/share/"; fi

InstalShFile="$DirBin"n_addoninstall.sh
echo "#!/bin/sh">"$InstalShFile"
echo "">>"$InstalShFile"

LogFile="$DirTmp$crntNameShort"_log.txt
echo "$DirTmp$TAR_NAME">"$LogFile"
echo "">>"$LogFile"

rm -rf "$DirTmp$TAR_NAME".tar.gz


if [ $ENIGMA_ON -ne 0 ]; then
	BT="ENIGMA"
	print_bt_2_log
	strFiles=""
	if [ $DM7020 -eq 1 ]; then strFiles=""/etc/network/interfaces" ""$DirEtc"resolv.conf""; fi
	for i in "$DirEnigma"config "$DirEnigma"timer* "$DirEtc"host* "$DirEtc"automount.conf $strFiles; do
		add_to_tarline
	done
	AUTORELOAD=1
fi


if [ $SERVICES_ON -ne 0 ]; then
	BT="SERVICES"
	print_bt_2_log
	strFiles="""$DirEtc"satellites.xml""
	if [ $DM7020 -eq 1 ]; then strFiles="""$DirTuxbox"satellites.xml""; fi
	for i in "$DirEnigma"services* "$DirEnigma"*bouquet* $strFiles; do
		add_to_tarline
	done
	AUTORELOAD=1
fi


if [ $GEMINI_CONFIG_ON -ne 0 ]; then
	BT="GEMINI_CONFIG"
	print_bt_2_log
	if [ $DM7020 -eq 1 ]; then DirStart="$DirEtc"; else DirStart="$DirTuxbox"config/; fi
	for LINE in $GEMINI_CONFIG_LINES; do
		Parameter=`grep "$LINE"= "$DirStart"Gemini.conf| tail -1| sed -e 's/.*=//'`	#| sed -e 's/\//\\//'
		if [ ! "$Parameter" ]; then
			echo "!!! NOT FOUND Parameter:  $LINE="
		else
			echo "$LINE=$Parameter"
			echo "$LINE=$Parameter">>"$LogFile"
			echo "## change parameter '"$LINE"' to '"$Parameter"' in Gemini config">>"$InstalShFile"
			echo "#">>"$InstalShFile"
			echo "if grep -qs 7020 /proc/bus/dreambox ; then">>"$InstalShFile"
			echo "   ConfigFile="/etc/Gemini.conf>>"$InstalShFile"
			echo "else">>"$InstalShFile"
			echo "   ConfigFile=""$DirTuxbox"config/Gemini.conf>>"$InstalShFile"
			echo "fi">>"$InstalShFile"
			echo ""OldLine=\`grep ""$LINE""= \$ConfigFile\`"">>"$InstalShFile"
			echo "if [ ! \"\$OldLine\" ]; then">>"$InstalShFile"
			echo "  echo $LINE=$Parameter>>\$ConfigFile">>"$InstalShFile"
			echo "else">>"$InstalShFile"
			echo "  sed 's/$LINE=.*/$LINE=$Parameter/' \$ConfigFile>\$ConfigFile.c">>"$InstalShFile"
			echo "  rm \$ConfigFile">>"$InstalShFile"
			echo "  mv \$ConfigFile.c \$ConfigFile">>"$InstalShFile"
			echo "fi">>"$InstalShFile"
			echo "">>"$InstalShFile"
		fi
	done
	AUTORELOAD=1
fi


if [ $SKINS_ON -ne 0 ]; then
	if [ $DM7020 -eq 1 ]; then
		DirStart="$DirShare""tuxbox/enigma/"
	else
		DirStart="$DirEnigma"
	fi
	for SKIN in $SKIN_FILES; do
		BT=SKIN_"$SKIN"
		print_bt_2_log
		for i in "$DirStart"skins/"$SKIN"* "$DirStart"pictures/"$SKIN"*; do
			add_to_tarline
		done
	done
fi


if [ $LOCALES_ON -ne 0 ]; then
	BT="LOCALES"
	print_bt_2_log
	for LOCALE in $LOCALE_CODES; do
		if [ $DM7020 -eq 1 ]; then FlagFile="";	else FlagFile=""$DirShare"countries/"$LOCALE"*"; fi
		for i in "$DirShare"locale/"$LOCALE"* $FlagFile; do
			add_to_tarline
		done
	done
fi


if [ $SCRIPTS_ON -ne 0 ]; then
	BT="SCRIPTS"
	print_bt_2_log
	for SCRIPT in $SCRIPT_FILES; do
		for i in "$DirScript$SCRIPT"*; do
			add_to_tarline
		done
	done
fi


if [ $CAMD3_ON -ne 0 ]; then
	BT="CAMD3"
	print_bt_2_log
	for i in "$DirBin"camd3* "$DirBin"pcamd* "$DirScript"camd3* "$DirKeys"camd3.* "$DirKeys"*services*; do
		add_to_tarline
	done
fi


if [ $MGCAMD_ON -ne 0 ]; then
	BT="MGCAMD"
	print_bt_2_log
	for i in "$DirBin"mgcamd* "$DirScript"mgcamd* "$DirKeys"mg_* "$DirKeys"*.list; do
		add_to_tarline
	done
fi


if [ $NEWCS_ON -ne 0 ]; then
	BT="NEWCS"
	print_bt_2_log
	if [ $DM7020 -eq 1 ]; then DirStart="/usr"; else DirStart="/var"; fi
	for i in "$DirBin"newcs* "$DirTuxbox"config/newcs* "$DirStart"/lib/libcamdio.so.0; do
		add_to_tarline
	done
fi


if [ $USER_ON -ne 0 ]; then
	BT="USER"
	print_bt_2_log
	for FILE in $USER_FILES; do
		for i in "$FILE"*; do
			add_to_tarline
		done
	done
fi


### autoreload sh file

if [ $AUTORELOAD -ne 0 ] && [ ! "$files2tar" = "" ]; then
	BT="create "$InstalShFile""
	print_bt_2_log
	echo "killall -9 enigma">>"$InstalShFile"
	echo "rm -rf "$InstalShFile"">>"$InstalShFile"
	chmod 755 "$InstalShFile"
	files2tar="$files2tar "$InstalShFile""
fi


### tar file

if [ ! "$files2tar" = "" ]; then
	BT="create "$DirTmp$TAR_NAME".tar.gz"
	print_bt_2_log
	tar -czf "$DirTmp$TAR_NAME".tar.gz ${files2tar}
	cp "$DirTmp$TAR_NAME".tar.gz /automount/nfs/"$TAR_NAME".tar.gz>/dev/null
	cp "$LogFile" /automount/nfs/"$TAR_NAME".log.txt>/dev/null
fi

rm "$InstalShFile"

exit 0

p.s.
mgcamd бэкапитса в не полнoм составе по скольку я им пользуюсь только изредко ради экспериминтов -
допишыте сами еле скажыте кокие файлы нехватают

p.s.2
непонятки с разностю dm500 и dm7020:


p.s.
mgcamd бэкапитса в не полнoм составе по скольку я им пользуюсь только изредко ради экспериминтов -
допишыте сами еле скажыте кокие файлы нехватают

p.s.2
непонятки с разностю dm500 и dm7020:
есле соберать фаилы для архива с "/" перед тропинкой то во время архивацыи длительное время занемает "tar: Removing leading '/' from member names"
a есле без то на дм500 всё произходит гораздо быстрей но на дм7020 совсем непроизходит, говорит "FILE NOT FOUND".
oт "Removing leading '/'" хотел избавитса не только изза скорости но и изза того что на длиных фаилах он ругаетса
(некоторые файлы скинов с тропинкой длиннее 100 символов)

p.s.3
неудалось наити решение чтобы из файла Gemini.conf бэкапилса любой параметр -
параметры в которых присутствиют символы "/" нельзя пока автоматизировать
(покачто это и не актуально)

Автор MartiniB
http://viaccessfree.com/showthread.php?t=16383
__________________
DM7020HD (2xDVB-S2), Merlin3+GP3 (OE1.6), HDD 2.5" 320 GB HM320JI, Wi-Fi
DM500S, Gemini 4.7, mgcamd 1.31
90cm(19E-13E-Twin9E-5E-4W)+80cm(Twin 36Е)+65cm(36E)

Последний раз редактировалось lagush; 05.05.2007 в 00:52.