Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.


Użytkownik



hej
mam prośbę o pomoc w napisaniu prostego skryptu shellowego, mianowicie chciałbym aby skrypt z danego miejsca zczytywał nazwy katalogów i pakował je wszystkie ale w odrębnych pliach np:
mam katalog:
/home/test
i tam są katalogi:
kat1
kat2
kat3
....
i tworzył kolejno: kat1.tgz kat2.tgz kat3.tgz i wiadomo jakby dochodził nowy katalog a ja znowu bym uruchomił skrypt to żeby już wziął go pod uwagę podczas kompresji.
z góry dziekuje pozdrawiam
Offline
Użytkownik

#!/bin/bash
for katalog in *
do
tar czvf $katalog.tgz $katalog
done
Najprosciej jak mozna. Ma to jednak taka wade , ze jesli w katalogu w ktorym wykonuje sie ten skrypt sa jakies pliki oprocz katalogow to te pliki popakuje wszystkie, kazdy w odzielnego .tgz wiec najlepiej byloby dodac po spakowaniu aby przeniosl spakowany plik gdzies do katalogu nadrzednego i tam trzymac te spakowane katalogi.
EDIT:
Gdybym sobie przypomnial jaka funkcja zwracala czy cos jest katalogiem czy plikiem to byloby juz dokladnie tak jak chcesz . Wtedy pakowalby tylko katalogi. Mam nadzieje ,ze cos pomoglem.
Offline



Członek DUG




Gdybym sobie przypomnial jaka funkcja zwracala czy cos jest katalogiem czy plikiem to byloby juz dokladnie tak jak chcesz . Wtedy pakowalby tylko katalogi.
file lub find <ścieżka> -type d
Offline
Użytkownik

andreq dzieki.
Teraz masz dobry skrypcik:
#!/bin/bash
for katalog in `find . -type d`
do
if [ $katalog == . ]
then echo "Pomijanie katalogu bierzącego.."
elif [ -e ./$katalog.tgz ]
then echo "Pomijanie $katalog poniewaz archiwum $katalog.tgz istnieje..."
else
tar czvf $katalog.tgz $katalog
fi
done
Gdybys jednak zaktualizowal cos w ktoryms juz spakowanym katalogu to musisz wywalic sprawdzanie aby moc spakowac to ponownie:
elif [ -e ./$katalog.tgz ]
then echo "Pomijanie $katalog poniewaz archiwum $katalog.tgz istnieje..."Offline


Użytkownik



dziekuje :)
Offline