Diskuze: Selektivní záloha určitých typů souborů
Člen
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.
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.
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..
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
Tak jsem to nějak dal dohromady, teď bych potřeboval znalecké oko. 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
Zobrazeno 5 zpráv z 5.