Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Хэрлэн Батхүрэл:16.1.2016 1:09

Čaute všichni!
Mám menší problém, dostal jsem úkol vytvořit jednoduchý shell skript na zálohu, ale už s tím nevím rady. Vůbec netuším, co mám špatně. Pro jistotu přiložím zadání a můj skript. Děkuji! :D

#!/bin/bash
SEARCHDIR=”/home/pa/Desktop/mywork/”
DESTINATIONDIR=”/home/pa/Desktop/backup/”
FILE=$'*.sh'
cd $SEARCHDIR
find . -name $FILE
if [ -f $FILE ];
then
echo "File $FILE exists, doing backup."
cd $SEARCHDIR
tar -c -f=$DESTINATIONDIR $FILE
du -a $DESTINATIONDIR
else
echo "File $FILE does not exists"
fi

PS. Nikdy předtím jsem nepracoval v Linuxu, takže mám v tom kaši. :D

 
Odpovědět
16.1.2016 1:09
Avatar
David Novák
Tvůrce
Avatar
Odpovídá na Хэрлэн Батхүрэл
David Novák:16.1.2016 10:15

V proměnné FILE budeš mít po spuštění všechny soubory s příponou .sh, které jsou v aktuální složce (tedy v té, ve které jsi ten skript spustil).. Takhle napsané se to rozvine.

Určitě by se ti taky hodilo vědět, že $1 je první argument a, $2 druhý atd. K vyhledávání pak použiješ něco takovéhoto:

cd $1
find -name '*.'$2

Tímto se presuneš do složky, ve které máš pracovat a pak vyhledáš všechny soubory se zadanou příponou. Výstup find budou v tomto případě cesty k nalezeným souborům.. Tedy například:

./b.sh
./fpgabuild/kconfig/scripts/ksync.sh
....

tohle si můžeš přesměrovat do proměnné a pak dát jako argument taru.

Nahoru Odpovědět
16.1.2016 10:15
Chyba je mezi klávesnicí a židlí.
Avatar
Хэрлэн Батхүрэл:17.1.2016 2:51

Díky moc. Ale ještě furt to nemůžu nějak dát dohromady. Nemohl bys mi na to ještě kouknout?
Chápu, že tohle je úplný základ, ale moje hlava to prostě nebere.

#!/bin/bash
find . -name '*.sh' $2
if [ -f $2 ];
then
   echo "File $FILE exists, doing backup."
   tar –cf=backup.tar $2 '*.sh'
   tar -tvf backup.tar

else
   echo "File $FILE does not exist"
fi

PS: vynechal jsem SEARCHDIR, DDIR, přišlo mi to zbytečný, když není jednoznačně dáno, že to musím pouštět odněkud jinud.

 
Nahoru Odpovědět
17.1.2016 2:51
Avatar
David Novák
Tvůrce
Avatar
Odpovídá na Хэрлэн Батхүрэл
David Novák:17.1.2016 8:08

Přečti si znovu zadání ;)

Musíš vyhledávat ze zadané složky a zadanou příponu - ty natvrdo vyhledáváš .sh.. co když ti někdo zadá .jpg ?

Ta složka by měla být jako první argument - tedy máš vyhledávat z ní a ne ze složky, ze které jsi spustil skript.

Taky ta podmínka je naprosto zbytečná - pokud se již něco najde, tak to existuje.. :D

A myslím, že ani find ani tar bys takto zapisovat nemohl - fungují trochu jinak, než si nejspíš myslíš.. přečti si prvně manuálové stránky a nakresli si třeba na papír postup, jak by to mělo fungovat..

http://linux.die.net/man/1/find
http://linux.die.net/man/1/tar
http://linuxcommand.org/…es/tar1.html

Nahoru Odpovědět
17.1.2016 8:08
Chyba je mezi klávesnicí a židlí.
Avatar
Хэрлэн Батхүрэл:18.1.2016 0:43

Tak jsem to nějak dal dohromady, teď bych potřeboval znalecké oko. :D Myslíš že mi to uzná?

#!/bin/bash
u=$USER
SDIR="/home/$u/Desktop/mywork/"
DDIR="/home/$u/Desktop/backup/"
FILE="*.txt"
mkdir -p $SDIR
mkdir -p $DDIR
echo "HOPE IT WORKS!">$SDIR/rofl.txt
echo "OMG, IT DOES!">$SDIR/finally.txt
echo "NO .TXT FILE">$SDIR/hello.sh
cd $SDIR
find . -name "$FILE"  | xargs cp -t $DDIR
cd $DDIR
tar -cvf done.tgz $DDIR
du -b $DDIR/done.tgz
 
Nahoru Odpovědět
18.1.2016 0:43
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.