Discussion:
bash script+dar
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
whitey
2007-09-17 14:14:51 UTC
Permalink
witam

proste pytanko pewnie dla wielu, ale jakos nie radze sobie z tym.
pisze skrypt ktory bedzie backupowal dane za pomoca "dar" z katalogow.
po to zeby byl bardziej elastyczny wymyslilem sobie ze konfig bedzie
taki mniej wiecej:

dir_zrodlowy1;dir_docelowy1;exclude1_1,exclude2_1
dir_zrodlowy2;dir_docelowy2;exclude1_2,exclude2_2
...
itd

wszystko idzie mi dopoki nie staram sie zamienic ostatniego ciagu po
drugim ";" na pojedyncze "-P exclude1_1 -P exclude2_1" bo w tej postaci
chce to dostac dar zeby wykonac komende.
oczywiscie moglbym wpisywac od razu "-P exclude1_1", albo jakis plik
tymczasowy, ale tak bedzie bardziej elegancko i mam nadzieje ze mi ktos
pomoze, mam nadzieje ze nie zamotalem za bardzo opisu.
z gory wdzieczny za pomoc
--
whitey
Smike
2007-09-17 17:08:48 UTC
Permalink
Post by whitey
po to zeby byl bardziej elastyczny wymyslilem sobie ze konfig bedzie
dir_zrodlowy1;dir_docelowy1;exclude1_1,exclude2_1
dir_zrodlowy2;dir_docelowy2;exclude1_2,exclude2_2
Konfig czego?? Tak wygląda plik konfiguracyjny dla programu "dar"?

Byłeś tam?:
http://dar.linux.free.fr/
http://gradha.sdf-eu.org/textos/backup.en.html
Post by whitey
wszystko idzie mi dopoki nie staram sie zamienic ostatniego ciagu po
drugim ";" na pojedyncze "-P exclude1_1 -P exclude2_1" bo w tej postaci
To chyba powinny być ustanowione zmienne w tym skrypcie okreslające
katalogi.
wyłączone z backupu.Tylko po co aż tak.
Pamiętasz o prawidłowej ścieżce do plików/katalogów. Jeżeli jako -R
podajesz np. /home/user
to już później tylko np. katalog1, katalog2/podkatalog , plik1, itd.

Przykładowy plik .darrc:
######
# this is an example of what could be a batch file
# (given to -B option), a /etc/darrc and a $HOME/.darrc file
# reminds that it is a simple example...
#


all:
# make terminal bell when user action is requested
-b

create:
# a list of file to not try to compress
-X "*_all_*.*.dar"
-X "*_diff_*.*.dar"
-X "*_inc_*.*.dar"
-Z "*.mpg"
-Z "*.MPG"
-Z "*.jpg"
-Z "*.JPG"
-Z "*.gz"
-Z "*.tgz"
-Z "*.bz2"
-Z "*.tbz"
-Z "*.mp3"
-Z "*.mpeg"
-Z "*.zip"
-Z "*.dar"

# create empty dir for excluded directories
-D

-R /

# we don't save theses directories
-P tmp
-P var/tmp
-P mnt
-P proc
-P dev/pts

# here we say we don't want to save dar files
-X "*.*.dar"

# we pause before starting a new slices
-p

# and we use gzip compression
-z

default:
# if no action is given then show the version
# in place of the usage help
-V
whitey
2007-09-18 09:24:01 UTC
Permalink
Post by Smike
Post by whitey
po to zeby byl bardziej elastyczny wymyslilem sobie ze konfig bedzie
dir_zrodlowy1;dir_docelowy1;exclude1_1,exclude2_1
dir_zrodlowy2;dir_docelowy2;exclude1_2,exclude2_2
Konfig czego?? Tak wygląda plik konfiguracyjny dla programu "dar"?
konfig do skryptu
Post by Smike
http://dar.linux.free.fr/
http://gradha.sdf-eu.org/textos/backup.en.html
bylem na obydwu
Post by Smike
Post by whitey
wszystko idzie mi dopoki nie staram sie zamienic ostatniego ciagu po
drugim ";" na pojedyncze "-P exclude1_1 -P exclude2_1" bo w tej postaci
To chyba powinny być ustanowione zmienne w tym skrypcie okreslające
katalogi.
wyłączone z backupu.Tylko po co aż tak.
Pamiętasz o prawidłowej ścieżce do plików/katalogów. Jeżeli jako -R
podajesz np. /home/user
to już później tylko np. katalog1, katalog2/podkatalog , plik1, itd.
######
# this is an example of what could be a batch file
# (given to -B option), a /etc/darrc and a $HOME/.darrc file
# reminds that it is a simple example...
#
# make terminal bell when user action is requested
-b
# a list of file to not try to compress
-X "*_all_*.*.dar"
-X "*_diff_*.*.dar"
-X "*_inc_*.*.dar"
-Z "*.mpg"
-Z "*.MPG"
-Z "*.jpg"
-Z "*.JPG"
-Z "*.gz"
-Z "*.tgz"
-Z "*.bz2"
-Z "*.tbz"
-Z "*.mp3"
-Z "*.mpeg"
-Z "*.zip"
-Z "*.dar"
# create empty dir for excluded directories
-D
-R /
# we don't save theses directories
-P tmp
-P var/tmp
-P mnt
-P proc
-P dev/pts
# here we say we don't want to save dar files
-X "*.*.dar"
# we pause before starting a new slices
-p
# and we use gzip compression
-z
# if no action is given then show the version
# in place of the usage help
-V
wszystko ok, moze jakos sie nie zrozumielismy. nie chce .darrc chce
wszystko to z linii komend robic po prostu skrypt ma za zadanie
"wyluskac" z tych danych w linijkach co ma backupowac gdzie ma skladowac
plik backupu i ktore katalogi ma wylaczyc z backupu (bo np mam
zamontowany udzial windowsowy w /mnt/nt i wole na dodatek miec dla
kazdego udzialu oddzielne archiwm). pytanie jest bardziej o basha a nie
o dara.
ok jeszcze raz, chodzi mi o to ze jak podam w jednej lnijce
...
skad_backup;gdzie_backup;exclude1,exclude2,exclude3
...
to skrypy wykona mi na przyklad

dar -c /gdzie_backup -Z "*.zip" -R /skad_backup -P exclude1 -P exclude2
-P exclude3

dzieki za zainteresowanie sprawa.
--
whitey
Smike
2007-09-18 14:09:12 UTC
Permalink
Post by whitey
wszystko ok, moze jakos sie nie zrozumielismy. nie chce .darrc chce
wszystko to z linii komend robic po prostu skrypt ma za zadanie
"wyluskac" z tych danych w linijkach co ma backupowac gdzie ma skladowac
plik backupu i ktore katalogi ma wylaczyc z backupu (bo np mam
No to teraz zrozumiałem inaczej:)
Chcesz wykonać archiwum z PRZYNAJMIEJ dwóch źródeł np. /var i /home/user
z jednego polecenia dla dara.Ponieważ nie podając opcji -R, dar wykonuje
archiwizację
od tego miejsca z którego został wywołany to moze tak stworzyć skrypt
żeby najpierw
przechodził do katalogu /var a po udanej archiwizacji skrypt zmieniał
katalog na /home/user.
Oczywiście to będą dwa oddzielne archiwa tworzone z odpowiednimi opcjami
-P, -X ,itp.
Jest jeszcze opcja "-g" więc moze jej użyć zamiast "-R".Dar zwraca
kilkanaście kodów na wyjściu,
więc i to można wykorzystać w skrypcie.
Jeśli znów nie zrozumiałem... no to trudno mówi się cóż;)
--
Smike
whitey
2007-09-18 15:20:29 UTC
Permalink
Post by Smike
No to teraz zrozumiałem inaczej:)
Chcesz wykonać archiwum z PRZYNAJMIEJ dwóch źródeł np. /var i /home/user
z jednego polecenia dla dara.Ponieważ nie podając opcji -R, dar wykonuje
archiwizację
od tego miejsca z którego został wywołany to moze tak stworzyć skrypt
żeby najpierw
przechodził do katalogu /var a po udanej archiwizacji skrypt zmieniał
katalog na /home/user.
Oczywiście to będą dwa oddzielne archiwa tworzone z odpowiednimi opcjami
-P, -X ,itp.
Jest jeszcze opcja "-g" więc moze jej użyć zamiast "-R".Dar zwraca
kilkanaście kodów na wyjściu,
więc i to można wykorzystać w skrypcie.
Jeśli znów nie zrozumiałem... no to trudno mówi się cóż;)
dzieki wielkie za zainteresowania i podpowiedzi. primo: niestety zle
wszystko wytlumaczylem, secundo: juz znalazlem rozwiazanie za pomoca sed`a
(prosze sie nie smiac, wiem nie jest to szczyt wyrafinowania ale dziala
na szczescie)

...
BACKUPS="
home;home;juzer1,juzer2
"
...
<ciach>

for BACKUPRES in $BACKUPS; do
echo $BACKUPRES
BACKUPDIRS=`echo "$BACKUPRES" | cut -f 1 -d ";"`
BACKUPDIRD=`echo "$BACKUPRES" | cut -f 2 -d ";"`
BACKUPDEL=`echo "$BACKUPRES" | cut -f 3 -d ";"`

if [ -d "$BACKUPDIR/$BACKUPDIRD" ];then
echo "Destination dir exist..."
else
echo "Destination doesn't exist. Creating directory...
fi

echo "Starting backup $BACKUPDIRS"

if [ "`echo $BACKUPDEL | wc -c`" == "1" ];then
echo "without -P"
tutj bedzie dar jezeli nic nie ma do excludowania
else
echo "-P `echo $BACKUPDEL | sed 's/,/ -P /g'`"
tutj bedzie dar jezeli jest cos do excludowania

z parametrem jak powyzej
fi

echo "end"
done

...

to tak pokrotce co chcialem uzyskac teraz mam tak ze jak chcem jakis
katalog oddzielnie backupowac w innym katalogu go skladowac to go
dopisuje jako linie do parametru ${BACKUPS}
to jest bardzo "raw" ze tak powiem skrypt ale pokazuje o co mi biegalo,
mniej wiecej. moze jakies bardziej eleganckie pomysly ktos ma?
(kurde czas sie zaczas perla uczyc powaznie, wiecej mozliwosci...)
ogolnie dzieki za odzew, musze to napisac niestety ze mialem obiekcje z
pisaniem na inne grupy poniewaz roi sie tam od trolli i niestety mozna
sobie wyobrazic jak by moj post potraktowano, nie dosc ze czlowiek nie
uzywa polskich znakow to jeszcze nie umie wytlumaczyc o co mu biega ;-).
--
whitey
whitey
2007-09-18 15:24:48 UTC
Permalink
Post by Smike
z jednego polecenia dla dara.Ponieważ nie podając opcji -R, dar wykonuje
ok jeszcze jedno w poprzednim poscie byl moj blad oczywiscie ze jest
parametr -R zapomnialem go wstawic bo pisalem z kiborda a nie
copy/paste, sorewicz
--
whitey
Loading...