• Nebyly nalezeny žádné výsledky

# !/ bin /bash

#

############ OBECNE NASTAVENI ####################

# USB MOUNTPOINTna jakou cestu se ma USB disk namapovat (/mnt/sda1)

# HD MOUNTPOINTna jakou cestu se ma HDD namapovat (/mnt/hda1)

# USB DEVPOINT jak je systemem USB rozpoznano (/ dev/sda)

# HD DEVPOINT jak je systemem HDD rozpoznan (/ dev/hda1)

# MODULES DIR Cesta k ’modules’ adresari

# DEFAULT FILE NAMEDefaultni nazev souboru konfigurace

# LOGYvhodne pro odaleni chybicek, napriklad pri jinem umisteni USB klicenky atp.

# SAVECONF LOGlogy o nahrati / aktualizaci modulu (pokud neni potreba pouzit /dev/null)

# SAVECONF ERRlogy o neexistujicich cestach a chybach branicich v dokonceni skriptu

# (pokud neni potreba pouzit /dev/null ) USB MOUNTPOINT=/mnt/sda1

# TMPDIR adresar kam se zkopiruji kopie vsech zmenenych souboru

# adresar musi existovat, podadresar se vytvori sam

# CHANGES cesta k adresari se zmenamichanges

# DIRS TO SAVE jmenny´ seznam adresaru, ktere jsou v $CHANGES a maji se zalohovat

# odeleno mezerou napr. DIRS TO SAVE=”etc opt root var”

# INC CHANGE={1|0} −ulozene zmeny se tykaji POUZE aktualne pozmenenych souboru!!!!

Pokud je potreba

# zachovat i predchozi zmeny, je treba zkopirovat image puvodniho modulu ulozeneho

# v pameti. !!! POZOR!! Kopiruje se vzdy jen image z nazvem

$DEFAULT FILE NAME !!!

TMPDIR=/tmp

CHANGES=/mnt/live/memory/changes DIRS TO SAVE=”etc opt root”

INC CHANGE=1 case”$1” in

−load )

if [ −e $SAVECONF ERR ];then rm $SAVECONF ERR

fi

if [ −e $SAVECONF LOG ];then rm $SAVECONF LOG

fi

date>>$SAVECONF LOG

echo>>$SAVECONF LOG

echo”Mounting USB...”

mkdir $USB MOUNTPOINT

# Unmounting sda∗

for mnt in ” ” 1 2 3; do

echoumount $USB DEVPOINT$mnt done

mount $USB DEVPOINT $USB MOUNTPOINT echo”Mouting HDA”

mount $HD DEVPOINT $HD MOUNTPOINT echo”End mouting...”

if [ ”$2” = ” ” ]; then

MODUL USB=$USB MOUNTPOINT/$DEFAULT FILE NAME# Soubor na USB MODUL HD=$MODULES DIR/$DEFAULT FILE NAME# Cil kam se bude kopirovat else

MODUL USB=$USB MOUNTPOINT/$(basename ”$2” .lzm).lzm# Soubor na USB MODUL HD=$MODULES DIR/$(basename ”$2” .lzm).lzm# Cil kam se bude kopirovat fi

echoMODUL USB=$MODUL USB>>$SAVECONF LOG echoMODUL HD=$MODUL HD>>$SAVECONF LOG

echo>>$SAVECONF LOG

# Existuje adresar modules if [ ! −d $MODULES DIR ];then

echoVytvarim ”$MODULES DIR” ...>>$SAVECONF LOG echo”Vytvarim ”$MODULES DIR” ...”

mkdir $MODULES DIR if [$?−ne 0 ]; then

echoVytvoreni ”$MODULES DIR” selhalo!>>$SAVECONF ERR exit 1

fi

echo>>$SAVECONF LOG

# Vse se zda v poradku else

echoAdresar ”$MODULES DIR” existuje>>$SAVECONF LOG echo”Adresar ”$MODULES DIR” existuje [OK]”

fi

# Kontrola existence souboru na pametovem mediu

if [ −e $MODUL USB ];then # −e/TRUEexistuje soubor ...

echo”Modul $MODUL USB... [OK]”

# Kontrola adresare s moduly if [ −d $MODULES DIR ];then

echo”$MODULES DIR existuje [OK]”

# Porovna´me, zda se stary a novy´ modul lisi

if [ −e $MODUL HD ] && ! cmp $MODUL HD $MODUL USB>/dev/null;then echo”Prepisuji soubor ”$MODULES DIR” souborem ”$MODUL USB””>>

$SAVECONF LOG

echo”∗∗∗Prepisuji starou konfiguraci ∗∗∗”

cp $MODUL USB $MODULES DIR chmod 755 $MODUL HD

echo””>>$SAVECONF LOG

echo”∗∗∗∗ls −l $MODULES DIR ∗∗∗∗”>>$SAVECONF LOG ls −l $MODULES DIR>>$SAVECONF LOG

date>>$SAVECONF LOG

echo”===== UPDATE =====”>>$SAVECONF LOG

echo””>>$SAVECONF LOG

echo”∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗”

echo” Konfigurace aktualizovana...”

echo”∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗”

shutdown−nrF now# Po uspesnem zavedeni je potreba jeste restartovat

# Pokud neexistuje configuracem tak ji jen nahrajeme elif [ ! −e $MODUL HD ];then

echoKopuruji modul ”$MODUL USB”do”$MODULES DIR”>>$SAVECONF LOG echo”∗∗∗Kopiruji konfiguraci ... ∗∗∗”

cp $MODUL USB $MODULES DIR chmod 755 $MODUL HD

echo””>>$SAVECONF LOG

date>>$SAVECONF LOG

echo”===== COPY =====”>>$SAVECONF LOG

echo””>>$SAVECONF LOG

echo”∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗”

echo” Nova konfigurace nahrana...”

echo”∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗”

shutdown−nrF now# A restartujeme

# Soubory se zdaji byt shodne, pokracujeme dal else

echoSoubor je shodny.>>$SAVECONF LOG echo”∗∗∗Soubory jsou shodne....preskakuji ∗∗∗”

echo ∗∗∗∗ls $MODULES DIR ∗∗∗∗ ls $MODULES DIR>>$SAVECONF LOG

echo””>>$SAVECONF LOG

fi else

echoNeexistuje adresar ”$MODULES DIR”>>$SAVECONF ERR fi

else

echoNeni mozne nacist modul $MODUL USB !

echoNeni mozne nacist modul $MODUL USB !>>$SAVECONF ERR fi

exit 0

;;

−debug )

if [ −e $SAVECONF ERR ];then rm $SAVECONF ERR fi

#find −name modules−type d>/root/find−modules.log

date>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo”∗∗∗∗∗ Parametry ∗∗∗∗∗”>>$SAVECONF LOG echop0=$0, p1=$1, p2=$2, p3=$3>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo”∗∗∗∗∗ lsusb ∗∗∗∗∗”>>$SAVECONF LOG lsusb>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo”∗∗∗∗∗ fdisk−l ∗∗∗∗∗”>>$SAVECONF LOG fdisk −l>>$SAVECONF LOG

#umount /dev/sda1 /mnt/usbflash

echo>>$SAVECONF LOG

echo>>$SAVECONF LOG

echo”∗∗∗∗∗ ls −l /mnt ∗∗∗∗∗”>>$SAVECONF LOG ls −l /mnt/>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo”∗∗∗∗∗ ls −l /mnt/live ∗∗∗∗∗”>>$SAVECONF LOG ls −l /mnt/live >>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo”∗∗∗∗∗∗ ls−l $HD MOUNTPOINT ∗∗∗∗∗∗∗”>>$SAVECONF LOG ls −l $HD MOUNTPOINT>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

∗∗∗∗∗∗∗ls−l usbflash∗∗∗∗∗∗∗>>$SAVECONF LOG ls −l /mnt/usbflash>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo”∗∗∗∗∗ ls −l / ∗∗∗∗∗”>>$SAVECONF LOG

ls −l / >>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

exit 0

;;

−−help )

echo”Pouzˇitı´: ‘ basename $0‘”>&2

echo”Pouzˇitı´: ‘ basename $0‘ [OPTION] SOURCE”>&2

echo”Uklada konfiguraci nebo ji nacita behem startu”>&2 echo”Argumenty:”>&2

echo”\”\” ulozeni configurace na USB klicenku pod defaultnim nazvem”>&2 echo”−save ulozeni konfigurace (defaultni nazev je $DEFAULT FILE NAME)”>&2 echo”−load nacte $DEFAULT FILE NAME z USB klicenky behem startu a pouzije”

>&2

echo”−debug debugovaci mod pro testovaci ucely (specialni logy a vypisy)”>&2 echo”−h / −help vypise tuto napovedu”>&2

echo””>&2

echo”−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−”>&2 echo””>&2

echo”Usage: ‘basename $0‘”>&2

echo”Usage: ‘basename $0‘ [OPTION] SOURCE”>&2

echo”Saving configuration or load it on startup from USB stick”>&2 echo”Arguments:”>&2

echo”\”\” save configuration on USB stick by default name”>&2

echo”−save save configuration (default name if $DEFAULT FILE NAME)”>&2 echo”−load load $DEFAULT FILE NAME from USB stick on startup and apply

changes”>&2

echo”−debug debug mode for testing purposes (special logs and prints)”>&2 echo”−h / −help print this help”>&2

;;

−h )

echo”Pouzˇitı´: ‘ basename $0‘”>&2

echo”Pouzˇitı´: ‘ basename $0‘ [OPTION] SOURCE”>&2 echo”Uklada konfiguraci nebo ji nacita behem startu”>&2 echo”Argumenty:”>&2

echo”\”\” ulozeni configurace na USB klicenku pod defaultnim nazvem”>&2 echo”−save ulozeni konfigurace (defaultni nazev je $DEFAULT FILE NAME)”>&2 echo”−load nacte $DEFAULT FILE NAME z USB klicenky behem startu a pouzije”

>&2

echo”−debug debugovaci mod pro testovaci ucely (specialni logy a vypisy)”>&2 echo”−h / −help vypise tuto napovedu”>&2

echo””>&2

echo”−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−”>&2 echo””>&2

echo”Usage: ‘basename $0‘”>&2

echo”Usage: ‘basename $0‘ [OPTION] SOURCE”>&2

echo”Saving configuration or load it on startup from USB stick”>&2 echo”Arguments:”>&2

echo”\”\” save configuration on USB stick by default name”>&2

echo”−save save configuration (default name if $DEFAULT FILE NAME)”>&2 echo”−load load $DEFAULT FILE NAME from USB stick on startup and apply

changes”>&2

echo”−debug debug mode for testing purposes (special logs and prints)”>&2 echo”−h / −help print this help”>&2

;;

” ” )

umount $USB DEVPOINT

mount $USB DEVPOINT $USB MOUNTPOINT

#TMPDIR=/home/icewind/TEMP

#CHANGES=/home/icewind/TEMP/changes if [ −d $TMPDIR ];then

TMPDIR=”$TMPDIR/tmpConfigSave”

else

echo”Chyba v docasne´m adresari. Adresar neexistuje.”

exit 1 fi

echo”Pripravuji docasny adresar ($TMPDIR)”

if [ −d $TMPDIR ];then rm−rf $TMPDIR fi

mkdir−p $TMPDIR #−p/no err if exist

if [ $INC CHANGE = 1 ] && [−e $MODULES DIR/$DEFAULT FILE NAME ];then echo”Kopiruji predchozi zmeny”

for DIR in /mnt/live /memory/images/$DEFAULT FILE NAME/∗;do if [ −d ”$DIR” ]; then

cp−aR $DIR $TMPDIR fi

done else

echo”Nenalezl jsem modul $MODULES DIR/$DEFAULT FILE NAME. Preskakuji kopirovani konfigurace...”

fi

for DIR in $DIRS TO SAVE;do cp−aR $CHANGES/$DIR $TMPDIR done

# cp−aR $CHANGES/{etc,home,opt,root,var}$TMPDIR #−a/archive, R/recursive

echo”Promazavam soubory ’.wh.∗’”

find $TMPDIR−typef−name ”.wh.∗”−delete # .wh.??

echo”Promazavam docasne soubory...(Caches)”

for CACHE in $(find $TMPDIR−typed−name ”Cache”) ;do# find typ/dir, name/”Chache”

if [ −n $CACHE ];then rm−Rf $CACHE/∗

fi done

if [ −d $TMPDIR/var/lib/pacman ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR/var/lib/pacman fi

if [ −d $TMPDIR/var/cache/pacman ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR/var/cache/pacman fi

if [ −d $TMPDIR/var/run ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR/var/run fi

if [ −d $USB MOUNTPOINT ];then

DESTINATION=”$USB MOUNTPOINT”/”$DEFAULT FILE NAME”

else

echo”Neexistuje $USB MOUNTPOINT. Ukladam do $(pwd)...”

DESTINATION=”$(pwd)”/”$DEFAULT FILE NAME”

fi

if [ −e $DESTINATION ];then

echo”Mazu puvodni soubor, budu prepisovat...”

rm−f $DESTINATION fi

echo”Vytvarim modul $DESTINATION....”

echo””

mksquashfs $TMPDIR $DESTINATION−b 256KB>mksquashfs.log if [ $?−ne 0 ]; then

echo”Error building module”

catmksquashfs.log exit 1

fi echo

echo”Uklizim soubory po vytvorene zaloze”

if [ −d $TMPDIR ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR fi

echoSoubor\”$DESTINATION\” byl uspesne vytvoren.

chmod oga−x $DESTINATION

echo”Pripravuji docasny adresar ($TMPDIR)”

if [ −d $TMPDIR ];then rm−rf $TMPDIR fi

mkdir−p $TMPDIR #−p/no err if exist

if [ $INC CHANGE = 1 ] && [−e $MODULES DIR/$DEFAULT FILE NAME ];then echo”Kopiruji predchozi zmeny”

for DIR in /mnt/live /memory/images/$DEFAULT FILE NAME/∗;do if [ −d ”$DIR” ]; then

cp−aR $DIR $TMPDIR fi

done else

echo”Nenalezl jsem modul $MODULES DIR/$DEFAULT FILE NAME. Preskakuji kopirovani konfigurace...”

fi

for DIR in $DIRS TO SAVE;do cp−aR $CHANGES/$DIR $TMPDIR done

# cp−aR $CHANGES/{etc,home,opt,root,var}$TMPDIR #−a/archive, R/recursive

echo”Promazavam soubory ’.wh.∗’”

find $TMPDIR−typef−name ”.wh.∗”−delete # .wh.??

echo”Promazavam docasne soubory...(Caches)”

for CACHE in $(find $TMPDIR−typed−name ”Cache”) ;do# find typ/dir, name/”Chache”

if [ −n $CACHE ];then rm−Rf $CACHE/∗

fi done

if [ −d $TMPDIR/var/lib/pacman ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR/var/lib/pacman fi

if [ −d $TMPDIR/var/cache/pacman ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR/var/cache/pacman fi

if [ −d $TMPDIR/var/run ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR/var/run fi

if [ ”$2” = ” ” ] && [−d $USB MOUNTPOINT ];then

DESTINATION=”$USB MOUNTPOINT”/”$DEFAULT FILE NAME”

elif [ ”$2” = ” ” ] && [ ! −d $DESTINATION ];then

echo”Neexistuje vy´chozı´ cesta /mnt/sa1. Ukla´da´m do $(pwd)”

DESTINATION=”$(pwd)”/”$DEFAULT FILE NAME”

else

echo”Zmeˇneˇne´ jme´no, ukla´da´m do $(pwd)”

DESTINATION=”$(pwd)/$(basename ”$2” .lzm).lzm”

fi

if [ −e $DESTINATION ];then

echo”Mazu puvodni soubor, budu prepisovat...”

rm−f $DESTINATION fi

echo”Vytvarim modul $DESTINATION....”

echo””

mksquashfs $TMPDIR $DESTINATION−b 256KB>mksquashfs.log if [ $?−ne 0 ]; then

echo”Error building module”

catmksquashfs.log

exit 1 fi echo

echo”Uklizim soubory po vytvorene zaloze”

if [ −d $TMPDIR ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR fi

echoSoubor\”$DESTINATION\” byl uspesne vytvoren.

chmod oga−x $DESTINATION exit 0

;;

)

echo”Pouzˇitı´: ‘ basename $0‘”>&2

echo”Pouzˇitı´: ‘ basename $0‘ [OPTION] SOURCE”>&2 echo”Uklada konfiguraci nebo ji nacita behem startu”>&2 echo”Argumenty:”>&2

echo”\”\” ulozeni configurace na USB klicenku pod defaultnim nazvem”>&2 echo”−save ulozeni konfigurace (defaultni nazev je $DEFAULT FILE NAME)”>&2 echo”−load nacte $DEFAULT FILE NAME z USB klicenky behem startu a pouzije”

>&2

echo”−debug debugovaci mod pro testovaci ucely (specialni logy a vypisy)”>&2 echo”−h / −help vypise tuto napovedu”>&2

echo””>&2

echo”−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−”>&2 echo””>&2

echo”Usage: ‘basename $0‘”>&2

echo”Usage: ‘basename $0‘ [OPTION] SOURCE”>&2

echo”Saving configuration or load it on startup from USB stick”>&2 echo”Arguments:”>&2

echo”\”\” save configuration on USB stick by default name”>&2

echo”−save save configuration (default name if $DEFAULT FILE NAME)”>&2 echo”−load load $DEFAULT FILE NAME from USB stick on startup and apply

changes”>&2

echo”−debug debug mode for testing purposes (special logs and prints)”>&2 echo”−h / −help print this help”>&2

;;

esac exit 0

Vy´pis 4: Zdrojovy´ ko´d rc.saveconf