Kirjoittaja Aihe: Varmuuskopiointi, ssh + rsync  (Luettu 12319 kertaa)

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Varmuuskopiointi, ssh + rsync
« : 19.04.10 - klo:14.02 »
Sain viimein palvelimen, johon pystyisin tekemään verkon yli varmuuskopioni, jos vain osaisin.

Minulla on nyt siis läppäri, josta haluan tehdä varmuuskopiot toiselle läppärille, joka on puoli-yleisessä käytössä. Aluksi meinasin tehdä salatun tar-pallon bz2:lla pakattuna, mutta tulin siihen tulokseen, että tällöin en ilmeisesti pystyisi hyödyntämään rsyncin incrementaaleja. Niinpä arvelin, että otan kaikki /homen ulkopuoliset (käytännössä /etc, tietokannan dumppi ja pari muuta yksittäistä tiedostoa) erilliseen backup-kansioon /homen alle. Tämän jälkeen koko /home rsynkataan etäpalvelimelle. Luotan tässä siihen, että siellä päässä kukaan ei ole kiinnostunut tiedostoistani, mikä on melko varmaa käyttäjäkunta tuntien.

Vastapäässä on käyttäjätili ja olen luonut avainparin SSH-yhteyttä varten ja se toimii mallikkaasti. SSH-palvelin pyörii yläportissa käytännön pakosta. Ongelma tällä hetkellä on, että saan virhettä kokeillessani synkkausta rsyncin dry-run -parametrilla. Käytän tällaista backup-skriptiä, jonka pitäisi hoitaa rotaatiota 7 päivän ajalta (huom! BDIR ei kata nyt siis juuri mitään, testausvaiheen takia):

Koodia: [Valitse]
#!/bin/sh

# This script does personal backups to a rsync backup server. You will end up
# with a 7 day rotating incremental backup. The incrementals will go
# into subdirectories named after the day of the week, and the current
# full backup goes into a directory called "current"
# tridge@linuxcare.com

# directory to backup
BDIR=/home/käyttäjä/backup

# excludes file - this contains a wildcard pattern per line of files to exclude
# EXCLUDES=$HOME/cron/excludes

# the name of the backup machine
BSERVER=varmistuspalvelimen_ip-osoite

# your password on the backup server
# export RSYNC_PASSWORD=XXXXXX


########################################################################

BACKUPDIR=`date +%A`
OPTS="--force --ignore-errors --delete-excluded --exclude-from=$EXCLUDES
      --delete --backup --backup-dir=/$BACKUPDIR -a"

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

# the following line clears the last weeks incremental directory
[ -d $HOME/emptydir ] || mkdir $HOME/emptydir
rsync -e 'ssh -ssh-käyttäjä -pyläportti' --delete -a $HOME/emptydir/ $BSERVER::$USER/$BACKUPDIR/
rmdir $HOME/emptydirq

# now the actual transfer
rsync -v -n $OPTS -e 'ssh -pyläportti' $BDIR käyttäjä@varmistuspalvelimen_ip-osoite:/current

Ja kun tämän ajaa, virhe on seuraava:

Koodia: [Valitse]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.5]
rmdir: ”/home/käyttäjä/emptydirq”:n poisto epäonnistui: Tiedostoa tai hakemistoa ei ole
sending incremental file list
created directory /current
backup/
backup/IfolorJavaUpload.data

sent 92 bytes  received 19 bytes  74.00 bytes/sec
total size is 228  speedup is 2.05 (DRY RUN)


En ole vielä ilman tuota dry-runia kokeillut, tapahtuuko mitään. Mutta käsittääkseni ssh-yhteys syntyy, mutta nuo kaksi ensimmäistä error-riviä estävät toiminnan. IfolorJavaUpload.data on tuolla testitiedostona backup-kansiossa.

Sen verran vielä taustatietoa, että varmuuskopioitavassa päässä on käytössä Jaunty ja varmuuskopiopalvelimessa pyörii Karmic. Vastapäähän ei ole asennettu mitään muuta kuin openssh-palvelin. Voisiko esim. rsyncin versioiden eroavuus aiheuttaa tuon virheen? Näköjään versiot ovat 3.05 Jauntyssa ja 3.06 Karmicissa.

Onko rsync ylipäätään järkevin ratkaisu tuohon vai kannattaisiko käyttää rdiff-backuppia tai rsnapshottia? En ole noihin tutustunut, mutta mainoslauseiden mukaan tuntuisivat tekevän asioita helpommin. Varsinkin rsnapshotissa vaikuttaisi olevan tuo yhden fullin ja parin lisäävän varmuuskopion pyörittäminen valmiina ohjelmassa ilman tarvetta omiin skripteihin.
« Viimeksi muokattu: 19.04.10 - klo:14.25 kirjoittanut Tha-Fox »

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #1 : 20.04.10 - klo:14.38 »
Näyttää vähän siltä, että jotain ongelmaa on tuossa skriptissä. Kokeilin seuraavaa komentoa ja se toimi nätisti:

Koodia: [Valitse]
rsync -avz -n -e "ssh -l ssh-käyttäjä -p yläportti" /oma_paikallinen_kansio rsync-käyttäjä@osoite:/polku/etäkoneella

Kokeilin myös ilman dry-run -parametria ja testitiedosto ilmestyi palvelimelle. Muutenhan tuo kometo olisi itsessään täydellinen, mutta rotaatiota se ei vielä tuo noihin varmuuskopioihin.

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #2 : 22.04.10 - klo:00.47 »
Vähän lisää googlettelua ja nyt on vaihtunut skripti täältä löydettyyn. Tuntui itselle ymmärrettävämmältä ensimmäiseen verrattuna. Lisäilin tuohon hieman optioita porttia varten ja tietysti polut säilytin ennallaan. Muuten tuo tuntuu toimivan oikein, mutta se ei tottele Exclude-kohdassa määriteltyä tiedostoa. Olen laittanut sinne yhden kansion, johon ajattelin tunkea kaikki isot binäärimöykyt. Tästä huolimatta testeissä ohjelma käy tuon kansion läpi. Osaisiko joku sanoa, mistä tämä voisi johtua? Tiedoston sijainti on määritelty absoluuttisella polulla, typot tarkistettu ja kansio on koetettu antaa kauttaviiva perässä sekä ilman.

Edit: Meinasi näin illan hämyssä unohtua toinen ongelma. Tuolla rotaatiota hoitavassa koodissa on tämä kohta:
Koodia: [Valitse]
for backup in `ssh -i $RKEY $RUSER@$RMACHINE "ls -dXr $RTARGET/*/"`; do
if [ $BACKUP_NUMBER -eq 1 ]; then
NEWEST_BACKUP="$backup"
fi

if [ $BACKUP_NUMBER -eq $ROTATIONS ]; then
OLDEST_BACKUP="$backup"
break
fi

let "BACKUP_NUMBER=$BACKUP_NUMBER+1"

Tämä viimeinen let-komento antaa minulle ilmoitusta, ettei tuollaista komentoa ole. Pitäisikö tuota ajaa eri shellissä vai mistä mahtaa olla kyse? Olettaisin, että jos tuo kohta ei toimi, varmuuskopiot eivät kierrä oikein.
« Viimeksi muokattu: 22.04.10 - klo:00.49 kirjoittanut Tha-Fox »

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #3 : 22.04.10 - klo:16.42 »
---
Edit: Meinasi näin illan hämyssä unohtua toinen ongelma. Tuolla rotaatiota hoitavassa koodissa on tämä kohta:
Koodia: [Valitse]
for backup in `ssh -i $RKEY $RUSER@$RMACHINE "ls -dXr $RTARGET/*/"`; do
if [ $BACKUP_NUMBER -eq 1 ]; then
NEWEST_BACKUP="$backup"
fi

if [ $BACKUP_NUMBER -eq $ROTATIONS ]; then
OLDEST_BACKUP="$backup"
break
fi

let "BACKUP_NUMBER=$BACKUP_NUMBER+1"

Tämä viimeinen let-komento antaa minulle ilmoitusta, ettei tuollaista komentoa ole. Pitäisikö tuota ajaa eri shellissä vai mistä mahtaa olla kyse? Olettaisin, että jos tuo kohta ei toimi, varmuuskopiot eivät kierrä oikein.

Mitäs vastaa jos koetat komentorivillä tuota viimeistä loitsua?
(Minulla palautti kiltisti ykkösen kuten odotettua)
Tietysti kannattaa kokeilla ajaa se bashissa, #!/bin/sh -> #!/bin/bash
Jos vaikka sinun(kin) /bin/sh on linkattu johonkin toiseen shelliin kuin /bin/bash

Minulla näkyy olevan:
 file /bin/sh
/bin/sh: symbolic link to `dash'
Ja siinä tuota let -komentoa ei ole.

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #4 : 22.04.10 - klo:21.28 »

Minulla näkyy olevan:
 file /bin/sh
/bin/sh: symbolic link to `dash'
Ja siinä tuota let -komentoa ei ole.


Sama täällä. Vähän ihmettelinkin tuota shebangia alussa, että miksi se ei ole bashissa. En kuitenkaan uskaltanut muuttaa sitä, kun en eri shellien ominaisuuksista niin paljoa tiedä. Pitääpä testata tuota skriptiä bashissa ja katsoa, mitä sieltä tulee. Testausta vain hidastaa se, että kone vaihtaa ip:tä pari kertaa päivässä, eikä dy.fi meinaa pysyä perässä, kun ei ihan tunneittain viitsisi päivitellä osoitettaan  :P

Edit: Tuo pelkkä let-rivi ei minulla palauttanut muuten mitään, meni vain läpi.

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11481
    • Profiili
    • Tomin kotisivut
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #5 : 22.04.10 - klo:22.20 »
Testausta vain hidastaa se, että kone vaihtaa ip:tä pari kertaa päivässä, eikä dy.fi meinaa pysyä perässä, kun ei ihan tunneittain viitsisi päivitellä osoitettaan  :P
Entä jos tarkistaisi onko se IP-muuttunut ja sen mukaan päivittäisi?
Tuolla ohjetta on alkuun pääsemiseksi (vaatii kuitenkin taitoa kirjoittaa sopiva scripti):
http://www.cyberciti.biz/tips/read-unixlinux-system-ip-address-in-a-shell-script.html
Eli hakemalla http://whatismyip.org/ saa tuon IP:n selville ja joku olikin ehdottanut siihen komentoa lynx --dump http://whatismyip.org/ mutta yhtälailla voit käyttää komentoa links -dump http://whatismyip.org/ joka vain antaa ylimääräisiä välejä. Tuo sitten pitäisi olla tallessa jossain tiedostossa johon sitä verrattaisiin ja sitten päivitettäisiin tuo jos tiedoston sisältö on jotain muuta ja sitten muutettaisiin sitä tiedostoa. Voisin oikeastaan kirjoittaa tuon huomenna omaksi ilokseni (ja upata tänne). :) Luultavasti tuollainen löytyisi myös Googlella.

Muokkaus: Tai sitten wget -qO - http://whatismyip.org/
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #6 : 22.04.10 - klo:22.28 »
Kävi mielessä tuo muuttaminen vain tarvittaessa, mutta oma taito ei riitä tuollaisen skriptin kirjoittamiseen. Voisi kyllä jotain yrittää väkerrellä ja verrata sun tuotokseen. Saan tuonne palvelimelle asenneltua ohjelmia, jos lynxiä sun muita tarttee.

Edit: Näyttäis paketti nimeltä ez-ipupdate aika viisaalta ratkaisulta, jos tuon saa vain toimimaan dy.fi:n kanssa. Toinen vaihtoehto olisi ilmeisesti ddclient, joka sekin tarkistaa ensin, onko ip muuttunut. Ja näköjään dy.fi tarjoaa osoitteen http://checkip.dy.fi tarkistamista varten.
« Viimeksi muokattu: 22.04.10 - klo:23.31 kirjoittanut Tha-Fox »

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11481
    • Profiili
    • Tomin kotisivut
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #7 : 22.04.10 - klo:22.42 »
Kävi mielessä tuo muuttaminen vain tarvittaessa, mutta oma taito ei riitä tuollaisen skriptin kirjoittamiseen. Voisi kyllä jotain yrittää väkerrellä ja verrata sun tuotokseen. Saan tuonne palvelimelle asenneltua ohjelmia, jos lynxiä sun muita tarttee.
Wget näkyy riittävän. En ole itsekään kovin kokenut tuossa bashissa, mutta kokeilen kunhan joudan eli varmaankin huomenna.
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #8 : 23.04.10 - klo:07.28 »

Minulla näkyy olevan:
 file /bin/sh
/bin/sh: symbolic link to `dash'
Ja siinä tuota let -komentoa ei ole.


Sama täällä. Vähän ihmettelinkin tuota shebangia alussa, että miksi se ei ole bashissa. En kuitenkaan uskaltanut muuttaa sitä, kun en eri shellien ominaisuuksista niin paljoa tiedä. Pitääpä testata tuota skriptiä bashissa ja katsoa, mitä sieltä tulee. Testausta vain hidastaa se, että kone vaihtaa ip:tä pari kertaa päivässä, eikä dy.fi meinaa pysyä perässä, kun ei ihan tunneittain viitsisi päivitellä osoitettaan  :P

Edit: Tuo pelkkä let-rivi ei minulla palauttanut muuten mitään, meni vain läpi.

Oletko varma? Siis katsoitko mitä ilmestyi muuttujaan
$BACKUP_NUMBER
Ja vaihtuiko sen arvo kun toistit ko. rivin ;)

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #9 : 23.04.10 - klo:08.57 »

Minulla näkyy olevan:
 file /bin/sh
/bin/sh: symbolic link to `dash'
Ja siinä tuota let -komentoa ei ole.


Sama täällä. Vähän ihmettelinkin tuota shebangia alussa, että miksi se ei ole bashissa. En kuitenkaan uskaltanut muuttaa sitä, kun en eri shellien ominaisuuksista niin paljoa tiedä. Pitääpä testata tuota skriptiä bashissa ja katsoa, mitä sieltä tulee. Testausta vain hidastaa se, että kone vaihtaa ip:tä pari kertaa päivässä, eikä dy.fi meinaa pysyä perässä, kun ei ihan tunneittain viitsisi päivitellä osoitettaan  :P

Edit: Tuo pelkkä let-rivi ei minulla palauttanut muuten mitään, meni vain läpi.

Oletko varma? Siis katsoitko mitä ilmestyi muuttujaan
$BACKUP_NUMBER
Ja vaihtuiko sen arvo kun toistit ko. rivin ;)


Oon taas niin... Näinhän se totta kai meni :D Ihmettelinkin, että mihin se oikein tallentaa tuota muuttujan arvoa.

Nyt pääsee taas fyysisesti palvelimelle, joten voi pistää dy.fi-osoitteen osoittamaan oikeaan paikkana ja viilailemaan skriptiä.

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11481
    • Profiili
    • Tomin kotisivut
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #10 : 23.04.10 - klo:19.08 »
Tässäpä tämä dy.fi:n päivittäjä. Lisää käyttäjänimi, salasana* ja dy.fi osoite ja aja cronilla (sekä tarvittaessa vaihda temppitiedosto (esimerkiksi useita IP:itä päivitettävänä). Tarkistaa päivän, jos se on vaihtunut päivittää IP:n, sekä IP:n, jos se on muuttunut niin päivittää.
Tuota saa kyllä jakaa eteenpäin ja muokata, kunhan pitää koodin näkyvissä (bash-skripti, joten ei pitäisi olla vaikeaa). Lisensoin GPL:llä (liekkö hyvä valinta?), versiota en määritellyt (tiedän, että niissä on eroja).

* Salasana base64-koodattuna. Ei turvallista, mutta parempi kuin sellaisenaan tuolla tiedostossa, koska muutoin joku voisi kurkkia olan yli mikä salasanasi on. Parempia ehdotuksia kyllä otetaan vastaan. Tähän mennessä ainakin itselläni se on ollut sellaisenaan crontabissa.

Muokkaus: Paranneltu skripti saatavilla

[ylläpito on poistanut liitteen]
« Viimeksi muokattu: 06.07.10 - klo:12.30 kirjoittanut Tomin »
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #11 : 24.04.10 - klo:22.35 »
Suurkiitos tuosta! Oikein hyvin kommentoitu, niin itsekin pysyy mukana, mitä siinä tapahtuu :) Ei olisi tällaiselta Java-koodarilta tuollainen taipunut  :-[ Laitan tuon heti testiin.

Katsoin tänään, eikä tuo rotaatio tuossa skriptissä tunnu toimivan oikein. Vaikka arvoksi on laitettu kolme, tuosta kansiosta löytyi viisi backup-kansiota. Voi olla, että siirtojen katkeilu ja tuo dashissa ajaminen on sotkenut tuota, joten poistin muutaman kansio tuolta ja katson, meneekö se vielä tuon rajan yli.

Vielä jos joku keksii, miksi tuo exclude ei toimi tuolta tiedostosta annettuna? Pitää testata tänään, toimiiko oikein, jos ne exludet antaa suoraan tuohon lopun rsync-käskyyn.
« Viimeksi muokattu: 24.04.10 - klo:22.37 kirjoittanut Tha-Fox »

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #12 : 25.04.10 - klo:01.28 »
Nyt toimii rotaatio oikein. Exclude toimii oikein suoraan käskyssä, mutta tiedostosta ei pelitä. Olen kokeillut eri muotoja, esim.

/kansio
kansio/
kansio/*
/kansio/*
"kansio"
"/kansio"

Periaatteessa tuo nyt ei haittaa, kun käskystäkin pystyy hoitamaan asian.

Onko muuten normaalia, että rsyncciä käsin ajaessa konsoli täytyy cp:n virheilmoituksista? Eli kopiointi epäonnistuu, koska kyseinen tiedosto on jo olemassa. Tässä yksi esimerkki:

Koodia: [Valitse]
cp: linkkiä ”/home/käyttäjä/kansio/./etc/hosts.deny” ei voi luoda: Tiedosto on olemassa
Edit: Nyt lähti tuo excludekin toimintaan. Näköjään pitäisi uskoa, kun sanotaan, että polku on suhteellinen. Olin uskollisesti laittanut absoluuttiset polut, eikä se niillä toiminut. Siis jos haluan kotikansiossa oletuksena majailevan Lataukset-kansion pois rsyncin piiristä, se täytyy tehdä seuraavasti:

Koodia: [Valitse]
[s]/home/käyttäjä/Lataukset[/s] <--- EI NÄIN!
Lataukset

Tuossa kannattaa ottaa huomioon, että se sitten jättää poimimatta kaikki Lataukset-kansiot. Kun itse otan nyt vaikkapa /etc:stä kopiot, sieltä jäisi Lataukset-kansio ottamatta, jos siellä sellainen olisi.

Nyt siis vaikuttaisi siltä, että tuo pitäisi enää siirtää rootin croniin ajettavaksi ja mietiskellä, miten seuraisi tuon toimintaa. Pitäisikö nuo vain ohjata logiin? En jaksaisi alkaa sähköpostipalvelinta väsäämään pelkästään tuon raportoinnin takia.

Edit2: Überkiitokset Tomppeli! Hyvin toimii skripti, piti samoin tein laittaa parille koneelle, kun on niin kätevä :D
« Viimeksi muokattu: 25.04.10 - klo:03.23 kirjoittanut Tha-Fox »

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #13 : 27.04.10 - klo:10.52 »
Skripti siirretty järjestelmän (tai rootin, miten vaan) cronin ajettavaksi.  Toimii oikein, kun muistin laittaa skriptin oikeudet kohdilleen  ::) Tein croniin postiohjauksen seuraavalla tavalla:

Koodia: [Valitse]
0  2    * * *   root    /polku/rbackup.sh | mail -s "Postia rsync-backupista" käyttäjätunnukseni
Huomasin kuitenkin, että päätteellä komento "mail" ilmoittaa, ettei sitä ole olemassa, vaan pitäisi asennella paketteja. Mikä tuohon olisi mahdollisimman kevyt ratkaisu, kun tarkoituksena on lähettää vain saman koneen käyttäjälle ilmoitus? mail-utils?

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #14 : 27.04.10 - klo:13.55 »
Skripti siirretty järjestelmän (tai rootin, miten vaan) cronin ajettavaksi.  Toimii oikein, kun muistin laittaa skriptin oikeudet kohdilleen  ::) Tein croniin postiohjauksen seuraavalla tavalla:

Koodia: [Valitse]
0  2    * * *   root    /polku/rbackup.sh | mail -s "Postia rsync-backupista" käyttäjätunnukseni
Huomasin kuitenkin, että päätteellä komento "mail" ilmoittaa, ettei sitä ole olemassa, vaan pitäisi asennella paketteja. Mikä tuohon olisi mahdollisimman kevyt ratkaisu, kun tarkoituksena on lähettää vain saman koneen käyttäjälle ilmoitus? mail-utils?

Tuo riittänee kunset ole mihinkään 'ulos' lähettelemässä.

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #15 : 27.04.10 - klo:20.09 »
Skripti siirretty järjestelmän (tai rootin, miten vaan) cronin ajettavaksi.  Toimii oikein, kun muistin laittaa skriptin oikeudet kohdilleen  ::) Tein croniin postiohjauksen seuraavalla tavalla:

Koodia: [Valitse]
0  2    * * *   root    /polku/rbackup.sh | mail -s "Postia rsync-backupista" käyttäjätunnukseni
Huomasin kuitenkin, että päätteellä komento "mail" ilmoittaa, ettei sitä ole olemassa, vaan pitäisi asennella paketteja. Mikä tuohon olisi mahdollisimman kevyt ratkaisu, kun tarkoituksena on lähettää vain saman koneen käyttäjälle ilmoitus? mail-utils?

Tuo riittänee kunset ole mihinkään 'ulos' lähettelemässä.


Pitääkin testata tuota illalla. Mitenkäs sitten, jos haluaisi ulospäin lähettää? dy.fi:llä on näköjään ainakin mx-tietuemahdollisuus, joten dns:n puolelta puitteet pitäisi olla olemassa. Ajattelin tätä kysellä lähinnä jatkoa ajatellen, jos joskus tulee tarvetta.

Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #16 : 07.05.10 - klo:08.54 »
Viritin hieman tuota lähettämistä vielä, enkä tietenkään saa toimimaan halutusti. Varmaankin tässä on kyseessä jokin ihan looginen virhe. Haluaisin siis lähettää postia vain silloin, kun on tapahtunut virhe. Niinpä muutin tuota aiempaa tällaiseksi:

Koodia: [Valitse]
00 2    * * *   root    /polku/rbackup.sh >/dev/null | mail -s "Postia rsync-backupista" käyttäjätunnus

Mutta nyt tuossa käy niin, että jos stderr:iin ei tulostu mitään virhettä, sieltä tulee silti tuo maili pelkkinä otsikkoina. Saisiko tuohon väännettyä jotenkin ehdon tyyliin "if virhe exists --> lähetä postia"?

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #17 : 07.05.10 - klo:14.06 »
Viritin hieman tuota lähettämistä vielä, enkä tietenkään saa toimimaan halutusti. Varmaankin tässä on kyseessä jokin ihan looginen virhe. Haluaisin siis lähettää postia vain silloin, kun on tapahtunut virhe. Niinpä muutin tuota aiempaa tällaiseksi:

Koodia: [Valitse]
00 2    * * *   root    /polku/rbackup.sh >/dev/null | mail -s "Postia rsync-backupista" käyttäjätunnus

Mutta nyt tuossa käy niin, että jos stderr:iin ei tulostu mitään virhettä, sieltä tulee silti tuo maili pelkkinä otsikkoina. Saisiko tuohon väännettyä jotenkin ehdon tyyliin "if virhe exists --> lähetä postia"?

Tuota... Noinhan sen pyydät. Minun mielestäni.
Kurkkaapa mitä saat kun ajat
/polku/rbackup.sh >/dev/null ilman putkitusta mihinkään, ihan päätteessä ;)

Kun näin maallikon silmin, varsinaisen skriptisi tulostus ohjataan /dev/null:iin?


Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #18 : 07.05.10 - klo:15.16 »
Viritin hieman tuota lähettämistä vielä, enkä tietenkään saa toimimaan halutusti. Varmaankin tässä on kyseessä jokin ihan looginen virhe. Haluaisin siis lähettää postia vain silloin, kun on tapahtunut virhe. Niinpä muutin tuota aiempaa tällaiseksi:

Koodia: [Valitse]
00 2    * * *   root    /polku/rbackup.sh >/dev/null | mail -s "Postia rsync-backupista" käyttäjätunnus

Mutta nyt tuossa käy niin, että jos stderr:iin ei tulostu mitään virhettä, sieltä tulee silti tuo maili pelkkinä otsikkoina. Saisiko tuohon väännettyä jotenkin ehdon tyyliin "if virhe exists --> lähetä postia"?

Tuota... Noinhan sen pyydät. Minun mielestäni.
Kurkkaapa mitä saat kun ajat
/polku/rbackup.sh >/dev/null ilman putkitusta mihinkään, ihan päätteessä ;)

Kun näin maallikon silmin, varsinaisen skriptisi tulostus ohjataan /dev/null:iin?



Sieltä tulee noita erroreita tähän tyyliin:

Koodia: [Valitse]
cp: linkkiä "jokin_tiedosto” ei voi luoda: Tiedosto on olemassa

Ihan kaikki ei tuntuisi siis menevän päätteeseen. Saisikohan tuon onnistumaan päin vastoin. Sen sijaan, että ohjaa ykkösen nulliin, ohjaisikin kakkosen (stderr) suoraan tuolle mail-ohjelmalle? Mahtaako moinen olla edes mahdollista?

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: Varmuuskopiointi, ssh + rsync
« Vastaus #19 : 07.05.10 - klo:16.17 »
Viritin hieman tuota lähettämistä vielä, enkä tietenkään saa toimimaan halutusti. Varmaankin tässä on kyseessä jokin ihan looginen virhe. Haluaisin siis lähettää postia vain silloin, kun on tapahtunut virhe. Niinpä muutin tuota aiempaa tällaiseksi:

Koodia: [Valitse]
00 2    * * *   root    /polku/rbackup.sh >/dev/null | mail -s "Postia rsync-backupista" käyttäjätunnus

Mutta nyt tuossa käy niin, että jos stderr:iin ei tulostu mitään virhettä, sieltä tulee silti tuo maili pelkkinä otsikkoina. Saisiko tuohon väännettyä jotenkin ehdon tyyliin "if virhe exists --> lähetä postia"?

Tuota... Noinhan sen pyydät. Minun mielestäni.
Kurkkaapa mitä saat kun ajat
/polku/rbackup.sh >/dev/null ilman putkitusta mihinkään, ihan päätteessä ;)

Kun näin maallikon silmin, varsinaisen skriptisi tulostus ohjataan /dev/null:iin?



Sieltä tulee noita erroreita tähän tyyliin:

Koodia: [Valitse]
cp: linkkiä "jokin_tiedosto” ei voi luoda: Tiedosto on olemassa

Ihan kaikki ei tuntuisi siis menevän päätteeseen. Saisikohan tuon onnistumaan päin vastoin. Sen sijaan, että ohjaa ykkösen nulliin, ohjaisikin kakkosen (stderr) suoraan tuolle mail-ohjelmalle? Mahtaako moinen olla edes mahdollista?

Kyllä, kakkosen voi ohjata. Ja yllättäen konstikkaan näköisellä loitsulla.
Kokeilepa
/polku/rbackup.sh 2>/dev/null