6
« : 27.08.24 - klo:17.20 »
Ajatukseni on siis se, että (Maten) live-levyllä ajellessa voisi tehdä mahdollisimman helposti levykuvan, ilman että tarvitsee asentaa .deb-pakettia yksinkertaisesti vain lataamalla linux osioon omaan kansioonsa nämä pari scriptiä.
En tosin ole vielä testannut toimiiko kaikki tehdyt ominaisuudet livelevyssä, vaikka omassa lähes vakiomatessani toimiikin.
DeadLine-projektilleni on ylihuominen.
Ainakin suurin piirtein näyttäisi toimivan siten kuten haluan, mutta jos löydätte jonkin bugin, niin olisi hienoa, jos ehdottaisitte korjausta.
skriptit tarvitsevat asetustiedoston: "harddisk.dev", jonka sisällön voi luoda esim.
echo /dev/sda >harddisk.dev
.. jolloin levykuva otetaan ja palautetaan /dev/sda - laitteelta.
teeVarmuuskopio.sh:n sisältö on tällähetkellä seuraava...
#!/usr/bin/bash
declare -i nro
declare -i tmpnro
header=""
basename="backup"
footer=".img.gz"
sourceDev="/dev/null"
if [ -f "harddisk.dev" ]
then
sourceDev="`cat harddisk.dev`"
echo "'$sourceDev'"
fi
nro="1"
tmpnro="1"
while [ "$tmpnro" -lt "100" ]; do
if [ -e "$header$basename$tmpnro$footer" ]; then
nro="$tmpnro"
fi
tmpnro="$tmpnro+1"
done
while [ -e "$header$basename$nro$footer" ]; do
nro="1+$nro"
done
filename="$header$basename$nro$footer"
destination="$filename"
text="Polku=`pwd` \nFilename=$filename"
#zenity --warning --text="$text"
if [ ! -e "$destination" ] ; then
echo "touched"
if zenity --question --title="Varmistus" --text="Tallennetaan laitteelta:'$sourceDev'\ntiedostolle:'$destination'\nYes tai kyllä->Hyväksyy varmuuskopion tekemisen" ; then
komento="sudo dd if=$sourceDev bs=1M|gzip >$destination"
#zenity --warning --text="New filename=$filename"
echo "$komento";
sudo rm knd.txt
sudo dd if=$sourceDev bs=1M|gzip >$destination
echo "Vielä on tilaa levyllä :)" |sudo dd of=knd.txt
sudo chmod 744 knd.txt
testi="`cat knd.txt`"
# HUOM destination==filename
if [ "$testi" == "Vielä on tilaa levyllä :)" ] ; then
echo "Varmuuskopio on tehty!"
fs=$(stat -c%s "$destination" )
if [ "$fs" -gt "10000000000" ] ;then
#if zenity --question --
zenity --info --text="Varmuuskopion tekeminen onnistui"
else
if zenity --question --title="Säilytetäänkö kuitenkin" --text="Levykuvan ($destination) koko on vain $fs, kun yleensä se on yli 10Gt. Tarkista myös, onko $sourceDev-windows osio? Säilytetäänkö levykuva kuitenkin. Kyllä/Yes->säilytetään."; then
zenity --info --text="Varmuuskopio ($destination) säilytettiin koosta ($fs) huolimatta."
else
rm $destination
zenity --info --text="Varmuuskopio tiedosto ($destination) poistettiin, koska se oli liian pieni ollakseen koko windowsin levykuva."
fi
fi
else
rm $destination
dirri="`pwd`"
zenity --warning --text="Tila loppui kesken tiedostojärjestelmästä. Lisää tilaa poistamalla suuria tarpeettomia tiedostoja. \nTältä ($dirri) osiolta!"
fi
sudo rm knd.txt
fi
fi
palautaVarmuuskopio.sh on seuraava...
#!/usr/bin/bash
declare -i nro
declare -i tmpnro
declare -i fs
filename=""
nro="1"
tmpnro="1"
forListBox=""
header=""
basename="backup"
footer=".img.gz"
destDev="/dev/null"
if [ -f "harddisk.dev" ]
then
destDev="`cat harddisk.dev`"
echo "'$destDev'"
fi
while [ "$tmpnro" -lt "200" ]; do
if [ -e "$header$basename$tmpnro$footer" ]; then
nro="$tmpnro"
ffff="$header$basename$nro$footer"
#filesize
fs=$(stat -c%s "$ffff" )
pvm="1.1.1970"
pvm=$(stat -c%w "$ffff"|awk '{ print $1}')
echo "pvm=" $pvm
# Jos suurempi kuin 5
if [ "$fs" -gt "5" ]; then
echo "$ffff filesize>5" $fs
fi
# Jos suurempi kuin 4 Gt
if [ "$fs" -gt "4196413000" ]; then
echo "$ffff filesize>4196413000" $fs
fi
forListBox="$forListBox$nro $fs $pvm $ffff"
forListBox="$forListBox "
nro="$nro+1"
fi
tmpnro="$tmpnro+1"
#if [ -e
done
while [ -e "$header$basename$nro$footer" ]; do
ffff="$header$basename$nro$footer"
#filesize
fs=$(stat -c%s "$ffff" )
pvm="1.1.1970"
pvm=$(stat -c%w "$ffff"|awk '{ print $1}')
echo "pvm=" $pvm
# Jos suurempi kuin 5
if [ "$fs" -gt "5" ]; then
echo "$ffff filesize>5" $fs
fi
# Jos suurempi kuin 4 Gt
if [ "$fs" -gt "4196413000" ]; then
echo "$ffff filesize>4196413000" $fs
fi
forListBox="$forListBox$nro $fs $pvm $ffff"
forListBox="$forListBox "
echo "$forListBox"
nro="1+$nro"
done
nro="$nro-1"
#filename=`zenity --list --title="Valitse kloonatun tiedoston nimi" --text="Valitse varmuuskopion lähde, josta palautetaan varmuuskopio" --column="Filesize" --column="Filename" --print-column=3 --radiolist $forListBox`
if [ "$nro" -gt "1" ] ; then
filename=`zenity --list --height=700 --width=1024 --title="Valitse kloonatun tiedoston nimi" --column="nro" --column="tiedostokoko" --column="pvm" --column="tiedostonnimi" --print-column=4 --radiolist $forListBox`
echo "Filename=$filename"
else
#filename="$header$basename$nro.txt"
filename="$header$basename$nro$footer"
echo "Automaattinen Filename=$filename"
fi
if [ -f "$filename" ] ; then
echo "Varmuuskopio palautetaanko ?"
if zenity --question --title="Palautetaanko varmuuskopio" --text="Palautetaanko varmuuskopiotiedosto ($filename) laitteelle: $destDev. Kyllä/Yes->palautetaan."; then
echo "Varmuuskopio palautetaan"
cat $filename|gunzip|sudo dd of=$destDev bs=1M
zenity --info --text="Varmuuskopio on palautettu (todennäköisesti) onnistuneesti. :)"
fi
else
if [ "a" == "a$filename" ] ; then
zenity --warning --text="Mitään tiedostoa ei ole valittu, joten ei palautettu varmuuskopiota!"
else
zenity --warning --text="Varmuuskopiota ei palautettu, koska sitä ($filename) ei ole!"
fi
fi
En tiedä toteuttaako nämä pari scriptiä teoksen arvon, mutta jos toteuttaa, niin olisikohan MIT:n lisenssi hyvä ?
Jos on jotain kysyttävää, niin kysykää, niin tarkennan.
Edit - Siis ajatus on se, että "Windows-ummikotkin" osaisivat tehdä varmuuskopion näiden kahden skriptin avulla yksinkertaisesti vain tuplaklikkaamalla scriptiä, kunhan vain joku laittaa harddisk.dev-tiedoston heidän avukseen.