Minulla on verkkokiintolevy ja haluaisin öisin tehdä varmuuskopion siihen koko levystä.
Tein skriptin missä on kolme riviä mount, rsync ja unmount.
Skripti toimii ja varmuuskopio onnistui, toistin operaation ja päivitys onnistui myös. Joten laitoin scriptin crontabiin.
Nyt aamulla sitten crontab lähetti viestin:
umount: /backup: not mounted
Eli kuten oli arvattavissa, mountaus epäonnistui ja se teki varmuuskopion samalle levylle ja nyt levy on täynnä.
Sekään ei ole ongelma, sillä rm -R /backup ratkaisi ongelman.
Mutta haluan välttää ongelmaa tulevaisuudessa ja keskeyttää varmuuskopioinnin jos levy ei ole mountautunut ja mahdollisesti jopa yrittää uudestaan. Miten tämä onnistuu?
Mount rivi on seuraava:
mount -t smbfs -o lfs,username=xxx,password=yyy //192.168.1.3/backup /backup
Varmuuskopiointi
ongelmallinen
6423
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 6
Vanhimmat
Jos liität siihen sen varmuuskopiokomennon ihan vaan "&&". && eli "and" suorittaa kaksi tai useamman komennon peränjälkeen kuitenkin siten että mikäli ensimmäinen komento epäonnistuu ei myöskään jälkimmäisiä suoriteta. Esim. komentoriville !25; tar -cvvf foo.tar foo/ ajaa ensin komentohistoriasta komennon indeksillä 25 ja sen jälkeen arkistoi foon. Mikäli komentoa 25 ei ole niin foo arkistoidaan joka tapauksessa. !25 && tar -cvvf foo.tar foo/ ajaa ensin komentohistoriasta komennon indeksillä 25 ja jos se onnistuu arkkistoi foon, mikäli komentoja ei ole kuin 24 historiassa ja !25 epäoonistuu myöskään foota ei arkistoida. Eli onnistuisiko se ihan noin yksinkertaisesti?
Moi. Ihan mielenkiinnosta, oletko kokeillut myös varmuuskopioiden palautusta, eli siis onnistuuko palautus? T: Uteliaisuutta ;P
Mount palauttaa 0:n silloin kun kaikki menee oikein. Katso nimimerkin colucix vastaus miten voit tarkistaa sen ennen kuin ajat rsync-komennon. http://www.linuxquestions.org/questions/linux-newbie-8/mount-return-code-606188/
keinoja on monia, tässä yksi vaihtoehto Tee scripti jossa tarkistetaan, että liitos on tehty ennen kuin backup suoritetaan laita scripti jonnekkin hakemistoon ja anna suoritusoikeudet (chmod x scripti.bsh) Ajoithan sitä sinun aikaisempaa cron jobia rootin cronista, jotta oikeudet tehdä tuo liitos. Aja tuota scriptiä rootin cronista niin pitäisi toimia #!/bin/bash #Liitetään verkkolevy mount -t smbfs -o lfs,username=xxx,password=yyy //192.168.1.3/backup /backup #Tarkistetaan, että liitos onnistui jos ei niin lopetetaan scripti if [ `df -h /backup/ | grep -v Filesystem | awk '{print $6}'` == "/backup" ]; then rsync xxxxx umount /backup else exit 1 fi
Eikös ihan samaan pääse tuolla yksinkertaisella "&&" yhdistelmällä? mount -t smbfs -o lfs,username=xxx,password=yyy //192.168.1.3/backup /backup && rsync xxxx Jos mount palauttaa jonkun muun arvon kuin 0 niin suoritus loppuu joka tapauksessa siihen?
Jep ihan samaan lopputulokseen pääsee, mutta lähinnä siksi toi scripti, että sitä on helpompi lähtee jalostamaan jos haluaa viritellä lisää "ominaisuuksia"