Etusivu | Tietokonejutut index

Tiedostojen yksinkertainen varmuuskopiointi Internetin yli käyttäen rsynciä ja SSH:ta

Näin olen hoitanut Debianin yksinkertaisen varmuuskopioinnin Internetin yli kerran kuussa läppäriltäni tiedostopalvelimelleni. Tapa ei ole paras mahdollinen, mutta riittävän yksinkertainen ja ajaa minulla asiansa. Ohje on kohtalaisen epäselvä, koska se on kirjoitettu lähinnä omaksi muistiinpanoksi, että muistan miten olen milläkin koneella asiat toteuttanut.

Varmuuskopioserveri

Aluksi luodaan backup käyttäjä, jolla on kirjoitusoikeus varmuuskopiohakemistoon (/var/backups/mirror/).

root@server# adduser --uid=999 --group backup --ingroup adm kopio

Tämän jälkeen muokataan kirjoitusoikeudet oikein.

root@server# chgrp -R backup /var/backups/mirror/
root@server# chgrp adm /var/log/
root@server# chmod o-rx /home/kopio

Varmuuskopioitava tietokone (client)

Järjestetään ensin clientille salasanaton kirjautuminen ssh:ta varten, ettei skripti kysele salasanaa.

root@client# ssh-keygen -t rsa
root@client# ssh-copy-id -i ~/.ssh/id_rsa.pub kopio@server

Seuraavaksi tehdään itse backup skripti. Koko järjestelmää ei kannata kopioida, vaan kannattaa kopioida itselle tärkeät tiedostot, conffitiedostot ja lista asennetuista paketeista.

Uuden järjestelmän asennusvaiheessa pakettilistan voi importata paketinhallintaan ja asentaa komennolla:

# dpkg --set-selections < dpkg-selections.txt && apt-get dselect-upgrade 
/etc/cron.scripts/backup :
#!/bin/sh
gzip -c /var/log/backup.log > /var/log/backup.log.gz
date > /var/log/backup.log

#rsync -az --delete --numeric-ids /mistä/ /mihin 2>> loki

# Koko järjestelmän kopioiminen on turhaa työasemassa, joten tallennetaan vain
# lista asennetuista paketeista ja conffitiedostot.
dpkg --get-selections |ssh kopio@server "cat > /var/backups/mirror/olli/dpkg-selections.txt"

rsync -az -x --delete --numeric-ids --exclude-from=/etc/rsync.exclude /etc/ kopio@server:/var/backups/mirror/clientdir/ 2>> /var/log/backup.log
rsync -az -x --delete --numeric-ids --exclude-from=/etc/rsync.exclude /usr/local/ kopio@server:/var/backups/mirror/clientdir/ 2>> /var/log/backup.log
rsync -az -x --delete --numeric-ids --exclude-from=/etc/rsync.exclude /root/ kopio@server:/var/backups/mirror/clientdir/ 2>> /var/log/backup.log
rsync -az -x --delete --numeric-ids --max-size=1M --exclude '*.mp3' --exclude-from=/etc/rsync.exclude /home kopio@server:/var/backups/mirror/clientdir/ 2>> /var/log/backup.log

#käyttäjien tiedostot
rsync -azx --delete --numeric-ids --max-size=150M --exclude-from=/etc/rsync.exclude /home kopio@server:/var/backups/mirror/clientdir/ 2>> /var/log/backup.log

echo 'backup done by /etc/cron.scripts/backup' >> /var/log/backup.log
date >> /var/log/backup.log

exit 0

/etc/rsync.exclude :

/var/backups/mirror
/var/log/backup.log
/dev
/sys
/proc
/tmp
/share*
/pchome
/work

Lopuksi ajastetaan skripti toimiman esim kuukauden välein lisäämällä /etc/crontab:iin seuraava rivi:

0 2     2 * *   root  nice -n 5 /etc/cron.scripts/backup

©oku 15.05.2012 Valid XHTML 1.0!