Kirjoittaja Aihe: Tein pari backup-scriptiä, viitseisittekö katsoa pahimmat bugit pois ?  (Luettu 1584 kertaa)

kamara

  • Käyttäjä
  • Viestejä: 3028
    • Profiili
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.
Koodia: [Valitse]
echo /dev/sda >harddisk.dev
.. jolloin levykuva otetaan ja palautetaan /dev/sda - laitteelta.

teeVarmuuskopio.sh:n sisältö on tällähetkellä seuraava...
Koodia: [Valitse]
#!/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...
Koodia: [Valitse]
#!/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.
« Viimeksi muokattu: 27.08.24 - klo:17.35 kirjoittanut kamara »