Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: tamrock - 08.04.17 - klo:21.38
-
Osaisiko joku auttaa äkkinäistä ja kertoa missä on vika kun tehtivien ajastus ei toimi kunnolla?
Elikkäs, crontabsilla olen koittanut saada varmuuskopiointia ajastettua. Ajastus ja kopiointi toimii hienosti, jos tarkoituksena on tehdä esim. varmuuskopio kahden kansion välillä vaikkapa koti-hakemistossa. Mutta sitten kun yritän samaa kannettavan ja palvelimen välillä (kotiverkossa) nousee tie pystyyn. Kopiointi onnistuu kyllä kyseisillä käskyillä läppärin ja palvelimen välillä jos kirjoitan loitsut suoraan päätteeseen mutta crontabsiin kirjoitettuna ei tapahdu mitään :-\ Missä mahtaa olla hämminki?
Alla on esimerkkinä crontab -e koodit joita olen käyttänyt...
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
* * * * * rsync -ah --stats --progress /home/tarmo/Varmuuskopiot /home/tarmo/Kormuusvapiot/
* * * * * rsync -rtv -e 'ssh -p 8000 -i identi_rsa' --progress /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/
-
Kokeile laittaa crontabiin rsync:n koko polku, eli /usr/bin/rsync
-
Nyt on kokeiltu vaan ei auttanut... :-\
-
Nyt on kokeiltu vaan ei auttanut... :-\
Voisin epäillä että ssh avaimesta on kyse, siis identi_rsa tiedostosta. Kokeile laittaa sillekin koko polku, mutta se ei välttämättä auta, etenkään jos avain on salasanasuojattu. Joku tietävämpi osannee opastaa lisää.
Lokitiedosto /var/log/auth.log kannattaa vilkaista, josko sieltä saisi vinkkiä.
-
Alkuun olinkin ongelmissa avaimen kanssa, enkä meinannut saada tätä varmuuskopiointia toimimaan ilman salasanan kirjoitusta. Kuitenkin aikani keskustelupalstoja luettuani löysin oikeat komennot ja kopiointi alkoi onnistua suoraan päätteestä ilman salasanoja. Siis juurikin kyseisiä avaimia käyttäen...Toivotaan että joku keksii keinon tähänkin ongelmaani.
Kiitos vaan avusta :)
-
Alkuun olinkin ongelmissa avaimen kanssa, enkä meinannut saada tätä varmuuskopiointia toimimaan ilman salasanan kirjoitusta. Kuitenkin aikani keskustelupalstoja luettuani löysin oikeat komennot ja kopiointi alkoi onnistua suoraan päätteestä ilman salasanoja. Siis juurikin kyseisiä avaimia käyttäen...Toivotaan että joku keksii keinon tähänkin ongelmaani.
Kiitos vaan avusta :)
Kokeilitko koko polkua avaimeen, kuten raimo neuvoi? Cron ei varmaankaan suorita komentoa käyttäjän kotihakemistossa.
* * * * * /usr/bin/rsync -rtv -e 'ssh -p 8000 -i /home/tarmo/identi_rsa' --progress /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/
Itse tekisin tuosta komennosta skriptin, jonka voisi siististi ajaa crontabissa tai komentorivillä:
#!/bin/sh
/usr/bin/rsync -rtv -e 'ssh -p 8000 -i /home/tarmo/identi_rsa' --progress /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/
Tallenna vaikka nimellä /home/tarmo/backup, aseta suoritettavaksi ja kopioi /usr/local/bin -hakemistoon:
chmod a+x backup
sudo mv backup /usr/local/bin/
Skriptiin voi sitten helposti kirjoitella muutakin logiikkaa varmuuskopioiden ylläpitoon.
-
Kiitti vihjeistä. Yritän tehdä niin kuin neuvoit vaan kun on vasta reilu 3 kk tätä ubuntu/linux harrastusta takana niin en lupaa että osaan täysin noudattaa ohjeita ::)
Siis lisäsin sen koodi-litanian alkuun sen /usr/bin/ , vaan ei tilanne siitä miksikään muuttunut.
Komento: * * * * * rsync -rtv -e 'ssh -p 8000 -i identi_rsa' --progress /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/
toimii haluamallani tavalla päätteeseen kirjoitettuna muttei kuitenkaan siihen crontabiin...
Siitä tuliki mieleen, että mitä eroa on jos kirjoitan tuohon koodiin tuon --progress tai sitten --delete komennot. Olen huomannut vain että se antaa itse kopiointi tapahtumasta vähän eri tietoja, onko sillä muuta väliä?
Näin äkkinäisenä kysyisin, että mites sen tallentamani "skriptin" sitten saan sinne crontabiin? ???
Kiitos!
-
Kiitti vihjeistä. Yritän tehdä niin kuin neuvoit vaan kun on vasta reilu 3 kk tätä ubuntu/linux harrastusta takana niin en lupaa että osaan täysin noudattaa ohjeita ::)
Siitä se ura urkenee. :)
Siis lisäsin sen koodi-litanian alkuun sen /usr/bin/ , vaan ei tilanne siitä miksikään muuttunut.
Komento: * * * * * rsync -rtv -e 'ssh -p 8000 -i identi_rsa' --progress /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/
Muuta identi_rsa -> /home/tarmo/identi_rsa
Olettaen siis että tiedosto sijaitsee tuossa polussa. Muuten ssh ei löydä avaintiedostoa, jos komento suoritetaan jossain muualla kuin kotihakemistossasi.
Eli näin:
* * * * * /usr/bin/rsync -rtv -e 'ssh -p 8000 -i /home/tarmo/identi_rsa' --progress /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/
Huomaathan, että cronin aikamääre * * * * * suorittaa komentoa jatkuvasti minuutin välein. Käytännössä haluat ehkä hieman pidemmät välit siirtoihin. Kerran tunnissa tai kerran päivässä esimerkiksi.
Kerran tunnissa, kymmentä yli tasan:
10 * * * *
Kerran päivässä, klo 6.30 (tai kun kone käynnistetään sen jälkeen):
30 6 * * *
Siitä tuliki mieleen, että mitä eroa on jos kirjoitan tuohon koodiin tuon --progress tai sitten --delete komennot. Olen huomannut vain että se antaa itse kopiointi tapahtumasta vähän eri tietoja, onko sillä muuta väliä?
--progress näyttää kopioinnin edistymisen siirron aikana.
--delete poistaa ylimääräiset vanhat tiedostot kohdehakemistosta.
Crontabissa --progress on tarpeeton ja oikeastaan vähän haitallinenkin, koska listaus päätyy johonkin lokiin. --delete taas on vaarallinen varmuuskopioidessa, koska se hävittää varmuuskopiosta tiedostoja, jos ne on poistettu lähteestä.
Näin äkkinäisenä kysyisin, että mites sen tallentamani "skriptin" sitten saan sinne crontabiin? ???
Viittaamalla siihen kuten mihin tahansa ohjelmaan:
* * * * * /usr/local/bin/backup
-
Kiitos vaivannäöstä. Koetan noilla vinkeillä päästä eteenpäin ja palaan asiaan jos ei ratkaisua löydy...
-
Skriptin sain toimimaan, eli kun kirjoitan päätteeseen nyt tuon "backup", kopioituu tiedostot palvelimelle. En vain onnistu siinä ajastuksessa, crontab ei ole tietävinään sille asettamastani kopiointitehtävästä... :-\
Olen kokeillut samaa varmuuskopiointia myös pöytäkoneen ja palvelimen välillä mutta ei toimi crontab siinäkään.
Onkos olemassa muuta konstia, jolla varmuuskopioinnin saisi tehtyä? Esim automaattisesti vaikka koneelle kirjautumisen yhteydessä?
-
Skriptin sain toimimaan, eli kun kirjoitan päätteeseen nyt tuon "backup", kopioituu tiedostot palvelimelle. En vain onnistu siinä ajastuksessa, crontab ei ole tietävinään sille asettamastani kopiointitehtävästä... :-\
Olen kokeillut samaa varmuuskopiointia myös pöytäkoneen ja palvelimen välillä mutta ei toimi crontab siinäkään.
Näytä skriptin sisältö:
cat /usr/local/bin/backup
Voit ohjata skriptin stdout ja stderr -ulostulot sopivaan lokitiedostoon, niin virheilmoitukset ovat luettavissa sieltä.
Eli muokkaa crontab-rivi tällaiseksi:
* * * * * /usr/local/bin/backup >> /home/tarmo/backup.log 2>&1
Tuo siis kirjoittaa backup-skriptin listaamat virheet ja muut tiedot kotihakemistossasi sijaitsevaan backup.log -tiedostoon.
Vaihtoehtoisesti ohjauksen >> /home/tarmo/backup.log 2>&1 voisi lisätä backup-skriptissä olevan rsync-komennon perään.
Onkos olemassa muuta konstia, jolla varmuuskopioinnin saisi tehtyä? Esim automaattisesti vaikka koneelle kirjautumisen yhteydessä?
Voit lisätä skriptin Käynnistettävät ohjelmat -asetustyökalun listaan, niin se ajetaan työpöydän avautuessa.
-
Skripti on tässä
#!/bin/sh
/usr/bin/rsync -rtv -e 'ssh -p 8000 -i /home/tarmo/.ssh/id_rsa' /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/
ja se backup.log tässä
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]
Eli taitaa se vika olla kuitenkin siellä salasana puolella...Kumma miksi se päätteeseen suoraan laittaessa toimii :-\
Olen kyllä ollut onnistuvinani avaimen luonnissa ja vielä palvelimelle kopioinnissakin. SSH yhteys pelaa ilman salasanan kyselyä.
Nyt kuitenkin kokeeksi loin juuri uuden avainparin. Nyt en enää onnistu kirveelläkään kopioimaan sitä julkista puolta palvelimelle :o
Koodiksi koetin seuraavaa komentoa
scp /home/tarmo/.ssh/id_rsa-backup.pub master@192.168.1.169 -p 8000 :/home/master/.ssh/
:/home/master/
Virheeksi tulee tuommoinen: No such file or directory
Hellurei... :D
-
Sain varmuuskopioinnin toimimaan aina koneelle kirjautuessa, eli nyt kuitenkin edes silloin tällöin tulee kansiosta varmuuskopio.
Vaan sitä crontabia en saa toimimaan. Aina tulee se sama virhe avaimista ja salasanoista. Olen tyhjentänyt palvelimelta (/home/maste/.ssh), kuin myös muilta koneilta kyseisen kansion ja luonut uudet avaimet. Kopioinut avaimet palvelimelle (näkyy tiedostossa /home/master/.ssh/authorized_keys), eli kait ne on oikeissa paikoissa minne ne on tarkoitettukin? SSH yhteys toimii avaimia käyttämällä (ei kysele salasanoja).
Joku helppo ratkaisu tähän varmaan on, vaan äkkinäisenä en sitä keksi...
-
Äkkiseltään käy mielessä ainakin sellainen, että cron suoritetaan root-käyttäjänä, mutta salasanaton kirjautumisesi on viritetty toimimaan omalla käyttäjätunnuksellasi. Pääkäyttäjällä on tietysti oikeus lukea tiedostot kotihakemistostasi, mutta voipi olla, ettei se vielä riitä, vaan sinun pitäisi virittää su -c -komennolla skripti suorittumaan omalla käyttäjätunnuksellasi.
-
Sain varmuuskopioinnin toimimaan aina koneelle kirjautuessa, eli nyt kuitenkin edes silloin tällöin tulee kansiosta varmuuskopio.
Vaan sitä crontabia en saa toimimaan. Aina tulee se sama virhe avaimista ja salasanoista. Olen tyhjentänyt palvelimelta (/home/maste/.ssh), kuin myös muilta koneilta kyseisen kansion ja luonut uudet avaimet. Kopioinut avaimet palvelimelle (näkyy tiedostossa /home/master/.ssh/authorized_keys), eli kait ne on oikeissa paikoissa minne ne on tarkoitettukin? SSH yhteys toimii avaimia käyttämällä (ei kysele salasanoja).
Joku helppo ratkaisu tähän varmaan on, vaan äkkinäisenä en sitä keksi...
Viittaa edelleen siihen, että SSH-avain on suojattu salasanalla. Kokeilin samanlaista cron-ajastettua rsync-siirtoa omilla koneillani, ja se toimi ongelmitta avaintunnistuksella, kun avainta ei ole suojattu salasanalla.
Minkä ohjeen mukaan teit sen avaimen? Esimerkiksi tämä Githubin ohje (https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/) käy, kunhan kohdassa 4 jätät salasanan määrittelemättä, eli ohitat kyselyn enterillä. Tällöin avainta ei myöskään tarvitse antaa ssh-agentin hallintaan.
Äkkiseltään käy mielessä ainakin sellainen, että cron suoritetaan root-käyttäjänä, mutta salasanaton kirjautumisesi on viritetty toimimaan omalla käyttäjätunnuksellasi. Pääkäyttäjällä on tietysti oikeus lukea tiedostot kotihakemistostasi, mutta voipi olla, ettei se vielä riitä, vaan sinun pitäisi virittää su -c -komennolla skripti suorittumaan omalla käyttäjätunnuksellasi.
Oletettavasti tamrock on muokannut käyttäjäkohtaista crontabia (crontab -e), jolloin komennot suoritetaan kyseisellä käyttäjätunnuksella. Yllä esitetty rsync-komento toimii kyllä myös roottina, kunhan SSH-avaimen polku on määritelty.
-
Nyt sain sen varmuuskopioinnin tomimaan crontabillakin :D
Eli vika oli siinä, että avaimen luonti vaiheessa olin asettanut sille salasanan. Kun loin nyt uuden avaimen, ilman salasanaa (pelkkä enter) niin jopas vaan alkoi tiedostot kopioitumaan.
Kiitos avusta kaikille!