Sziasztok!
Scriptekkel teljes rendszert mentenék inkrementálisan a következő scripttel:
DOW=`date '+%w'`
tar --exclude=/xxx --exclude=/yyy --exclude=/zzz --newer /backup/Heti/mentes.tar.gz -czpvf /backup/Napi/mentes-$DOW.tar.gz /nentendo_konyvtar > /var/log/mentes_incr
_$DOW.txt
Ennek a scriptnek előfeltétele, hogy a heti mentés teljesen lementi a mentenivalót (a /backup/Heti/mentes.tar.gz-be.
Természetesen tudom, hogy a --newer kapcsoló dátum megadására szolgál, de ha oda egy file-t adok meg, akkor az az ahoz képest történt változásokat menti el.
A problémám az, hogy ha rootként (és vagy nevesített userként) futtatom kézzel e scriptet, akkor korrektül lefut, s elkészül a különbözeti mentés. Ha időzítve futtatom cronból, akkor csak egy 20 byte-os állomány generálódik csak.
Mi lehet az oka? Mit nézzek meg?
Az oprendszer egy Debian (Linux version 2.6.18-6-amd64 (Debian 2.6.18.dfsg.1-18etch6))
A tar a legfrissebb...
A válaszokat előre is köszi!
- 2609 megtekintés
Hozzászólások
Le kell menteni a dátumot minden nap egy fájlba, majd a newer-nek beadagolni.
pl:
NOW = `date +%d-%b`
echo $NOW > napidatum (napidatum a fájl, a tartalma következő lesz 17-jul)
majd
NEWER = "--newer `cat napidatum`"
aztán
tar $NEWER stb.
Üdv.
- A hozzászóláshoz be kell jelentkezni
Jó lenne ez a megoldás, de nem ez a problémám... :(
Hanem, hogy ha normál shell scriptként futtatom a fenti sort, működik, s ha cron-ból fut, akkor nem, s arra kellene rájönni, hogy miért nem megy. -> Akkor egy másik feladatom is megoldódna, csak ez az egyszerűbben bemutatható.
(A logban annyi látszik, hogy elindul a tar...)
- A hozzászóláshoz be kell jelentkezni
nyilvan valami path nem jo, annyira nincs sok lehetoseg a hibara, hogy ne johess ra magadtol. szerintem.
$0
t
- A hozzászóláshoz be kell jelentkezni
Ez az egészet tedd bele egy külön bash scriptbe, és úgy futtasd.
Esetleg: akinek a nevében a cronba fut, annak a path-ban benne van a tar? Van joga olvasni a forrást és írni a célhelyre?
--
Discover It - Have a lot of fun!
- A hozzászóláshoz be kell jelentkezni
1. Ha a path nem lenne jó, akkor a kézi futtatásnál sem futna le...
2. Root-ként futtatom a scriptet... A path tartalmazza a teljes útvonalat a script könyvtárhoz, a tar-hoz. Kipróbáltam úgy is, hogy mindent fix útvonallal írtam be, akkor is ugyanez a jelenség.
Egészen konkrétan...
/usr/local/ih/bin/incr_backup.sh -t futtatom a cron -ból.
A scipt tartalma:
#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/sbin:/usr/local/ih/bin
DOW=`date '+%w'`
tar --newer /data/Backup/Heti/home.tar.gz -czvf /data/Backup/Napi/home-$DOW.tar.gz /data/Sync/home > /var/log/home_incr_$DOW.txt
Ezt a scriptet kézzel futtatva lefut jól, de cron-ból nem.
- A hozzászóláshoz be kell jelentkezni
Próbáld meg így:
A scipt tartalma:
#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/sbin:/usr/local/ih/bin
DOW=`date '+%w'`
/usr/local/bin/tar --newer /data/Backup/Heti/home.tar.gz -czvf /data/Backup/Napi/home-$DOW.tar.gz /data/Sync/home > /var/log/home_incr_$DOW.txt
Remélem tényleg a /usr/local/bin -ben van a tar
/mazursky
- A hozzászóláshoz be kell jelentkezni
/bin/tar -ban van, de így sem megy, ugyanaz a hibajelenség!
- A hozzászóláshoz be kell jelentkezni
diff-eld le az env parancs kimenetét a két esetben, hátha
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
Plusz áljunkcsakmeg, hibaüzenet a cron-os scripttől nem jön?
Elvileg mailben elküldi a cron a root-nak ha valamelyik cron script-nek van kimenete.
Ha nincs belőve a mail, akkor persze senki sem kapja meg. A crontab-ban irányítsd át a stderr-t egy fileba.
- A hozzászóláshoz be kell jelentkezni
at-tel indítva képes futni? Mert akkor környezeti beállítási problémája van. Szerintem.
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
A konkrét problémát nem oldja meg, de esetleg próbálkozhatsz rsync -el.
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Nem lehet, hogy csak a szokásos probléma van? Azaz, hogy kimaradt az RTFM, ahol is le van írva, hogy a crontab fájlban a %-nak speciális jelentése van? És a szkriptedben ott a (majdnem mindig hibát okozó) date +%XYZ parancs????
- A hozzászóláshoz be kell jelentkezni
Lame kérdés.
Most akkor a crontab az a file amit a cron figyel és ha az ott található időzítési feltétel "beáll" akkor végrehajtaja a parancsot. A parancs általában egy script amit az adott (a cron által regisztrált) user nevében végrehajt. (Lehet hogy a kollégánál az a gond hogy nem dta meg a cronnak a usert?) A scriptben található % jel viszont a cron számára közömbös, ugye?
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Végigkísérleteztem a napot...
Az eredmények:
- Env-ek különbsége: aliasok, és egy - két nem oda kapcsolódó, kézzel berakott változó.
- Sem mailban, sem file-ban nincs hiba bejegyzés, a program "lefut"... csak rosszul.
- At-os időzítéssel lefut... jól.
- Ezek egy része már rsync-es file, így az nem segítség.
- Végigolvastam párszor a man-t... és máig nem értem, hogy a crontabnak mi köze a bele linkelt, és onnan futtatott %-ot tartalmazó script file-nak?
Érdekességként:
Az alap scriptet erről a gépről szedtem, s ezen teljesen jól működik egy pár éve.
Linux version 2.6.7 (root@xxxxxxx) (gcc version 3.3.5 (Debian 1:3.3.5-13)) #9 SMP Sun Sep 23 11:41:15 CEST 2007
Ezen meg nem...
Linux version 2.6.18-6-amd64 (Debian 2.6.18.dfsg.1-18etch6) (dannf@debian.org) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Fri Jun 6 05:24:08 UTC 2008
crontab teljesen szabályos beállítású:
00 6 * * 2-6 root incremental_backup.sh
- A hozzászóláshoz be kell jelentkezni
OK, én az eredeti felvetést úgy értelmeztem, hogy ez a két parancs van magában a crontab fájlban, nem pedig sh /x/y/script formában hívod.
Ezt azért leírnád, hogy mit jelent?
> a crontabnak mi köze a bele linkelt, és onnan futtatott %-ot tartalmazó script file-nak?
Hogyan linkelsz bele fájlt??? Vagymivan
(Én ezt hittem ez van a crontab fájlban:
perc óra nap hónap hét_napja root DOW=`date +%akarmi` ; estébé
nem pedig:
perc óra nap hónap hét_napja root sh /x/y/z.sh
Bocs.)
Akkor további tippek:
crontab-os indítás esetén nem (minden megvalósításnál) szokott lenni: $HOME, $PWD, nincs $LOGNAME, $USER pl. Lehetnek mások az ulimit beállítások. Ja, és szinte biztosan egész más a PATH.
én ulimit -a ; env ; set ; pwd
parancsokkal tesztelném a cron-ból futtatott és a normál/napi futtató környezet közti különbséget. Ja, és rakd a futtató szkript elejére: set -x. Ez elég rendes debug állapotot kapcsol be ahhoz, hogy esély legyen elindulni.
- A hozzászóláshoz be kell jelentkezni
Ezt azért leírnád, hogy mit jelent?
> a crontabnak mi köze a bele linkelt, és onnan futtatott %-ot tartalmazó script file-nak?
Ez Zahy | 2008. július 18., péntek - 15:57 felvetésére szólt... mert nem értem, mire gondol...
Akkor további tippeket holnap próbálom... s köszönöm!
- A hozzászóláshoz be kell jelentkezni
Én már nem tudom ki mit nem ért, én azt, hogy mit jelent a "bele linkelt fájl" kifejezés. (És meg is magyaráztam, hogy én mit hittem.)
- A hozzászóláshoz be kell jelentkezni
- At-os időzítéssel lefut... jól.
Akkor leszel szíves a script elején minden, számára fontos környezeti változót beállítani. Mondom mindet!
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
Az a vicc, hogy aznap "megjavult", az a script azóta is miegy, ami shell=/bin/bash-t kapott még pluszban...
(Ráadásul felbővítettem mindenféle dátummutációval számolgató móddal %W és társai :))
De egy másik szerveren nem segít... de ez alapján megróbálom kiszöszmötölni... addig meg rsync-el átpakolva, s mentve itt :)
Köszönöm mindenkinek!
- A hozzászóláshoz be kell jelentkezni
[off]
trey, már mintha lett volna olyan, hogy ha egy hozzászólásban túl hosszú a link, akkor csak magához a hozzászóláshoz tesz egy kis scrollbart, nem az egész
oldalt nyújtja széjjel. Ez az opció él még? Miért nincs aktiválva? :S Nekem 1024-es felbontásba ezek már nem férnek bele, és szar így scrollozni. :S
[/off]
--
Discover It - Have a lot of fun!
- A hozzászóláshoz be kell jelentkezni
Nálam csak a hosszú hozzászólásban van csúszka.
--------------------------------------------------------------
"Tegnap reggel addig röhögtünk a főnök viccén, míg ki nem derült, hogy az a napi feladat."
- A hozzászóláshoz be kell jelentkezni