Odo.lv » Recipes » Rsync attālinātu kopiju veidošana

Warning: Šis apraksts jau vairāk ka gadu nav mainīts. Iespējams, ka tas ir novecojis!

Rsync attālinātu kopiju veidošana


Priekšnoteikumi: Open SSH serveris

Rsyc ir programma, kas veic datu kopēšanu, izmantojot drošu (šifrētu) sakaru kanālu. Izmantojot rsync, iespējams sinhronizēt atsevišķus failus, vai veselu katalogu struktūru no attālinātiem serveriem uz lokāla datora.

Uzstādīšana

  1. Izpilda komandu:
    sudo apt-get install rsync

Vides sagatavošana

  1. Tiek pieņemts, ka visiem attālinātajiem (mērķa) serveriem darbojas SSH serveris un rezerves kopijas atrodas katalogā /home/backup.
  2. Arī uz lokālā datora (failu servera) visas kopijas veido katalogā /home/backup, katra atsevišķa servera kopijas izvieto apakškatalogā, kas sakrīt ar servera nosaukumu.
  3. Ja uz mērķa serveriem ir aizliegta root lietotāja pieteikšanās, nodrošina, lai lietotājam (piem., student) ir tiesības lasīt rezerves kopiju katalogus.
    1. Pievieno lietotāju student root grupai:
      usermod -G root -a student
    2. Nodrošina, ka uz attālinātajiem serveriem root grupai ir tiesības lasīt, bet citiem ne:
      chown root:root /home/backup
      chmod 750 /home/backup
  4. Līdzīgi nodrošina, ka uz lokālā datora student lietotājam ir tiesības rakstīt katalogā /home/backup:
    usermod -G root -a student
    chown root:root /home/backup
    chmod 770 /home/backup
  5. Nodrošina, ka no lokālā datora, uz attālinātajiem serveriem var pieteikties bez paroles.
  6. Ar student lietotāju piesakās visiem mērķa serveriem ar ssh, apstiprina to sertifikātus un pārbauda, ka var pieteikties bez paroles un var nolasīt kataloga /home/backup saturu.
  7. Ja vēlas izmantot īsus kopējamo serveru vārdus, pievieno to IP adreses un nosaukumus failā /etc/hosts, piemēram:
    …
    85.254.211.1	ante
    92.240.68.210	odo
    ...

Kopēšana ar vilkšanu

Vairāku publiski pieejamu serveru rezerves kopiju sinhronizāciju ērtāk ir veikt vienotā veidā no failu servera, jo tad ar vienu skriptu var pieslēgties visiem serveriem un "novilkt" no tiem nepieciešamos datus.

  1. Katalogā /home/bin izveido failu backup_servers ar sekojošu saturu:
    #!/bin/bash
    # List of servers, delimited by spaces
    # this script should be run by user not root!

    user="valdis" hosts="ante odo wood ob1 ob2" tdir="/home/backup/" log="/home/backup/backup_servers_log"

    for chost in $hosts do backup_dir=$tdir$chost if [ ! -d $backup_dir ]; then mkdir $backup_dir fi ## add -n for dry run (test only) command="rsync -avzr --delete-after --exclude *old* $user@$chost:/home/backup/ $tdir$chost" echo "\n\n============================================================================">>$log echo "*********** $chost backup *********** `date`">>$log echo "============================================================================">>$log echo $command >> $log $command >> $log 2>&1 done
  2. Izmantotie parametri norāda, ka:
    1. -a veidot pilnu (arhīva) kopiju, ieskaitot failu datumus, grupas un tiesības,
    2. -v rādīt ziņojumus,
    3. -z izmanot datu pārraides kompresēšanu,
    4. -r kopēt visus apakškatalogus,
    5. --delete uz lokālā datora izdzēst uz mērķa datora vairs neesošus katalogus,
    6. --exclude *old* izlaist failus un atalogus, kuru nosaukumā ir old
    7. -n var pievienot, veicot testus (izvada paziņojumus, bet reālu kopēšanu neveic)
  3. Iestata faila pieejas un izpildes tiesības:
    chown student:root /home/bin/backup_servers
    chmod 770 /home/bin/backup_servers
  4. student lietotājs palaiž failu un pārliecinās, ka faili tiek nokopēti un nav nekādu kļūdu.

Kopēšana ar grūšanu

Ja nepieciešams sinhronizēt datus no datora privātā tīklā, kas nav publiski pieejams, (piemēram, darba vai mājas datora, tad nepieciešams publiski pieejams failu serveris, kuram var pieslēgties un "aizgrūst" uz to nepieciešamos datus.

  1. Katalogā /home/bin izveido failu backup_server ar sekojošu saturu:
    #!/bin/bash
    # List of servers, delimited by spaces
    user="valdis"
    thost="files"
    tdir="/home/backup/bubba/"
    log="/home/backup/backup_bubba_log"
    thost="files"
    chost="bubba"

    ## add -n for dry run (test only) command="rsync -avzr --delete-after --exclude-from /home/bin/backup_bubba_exclude /home/ $user@$thost:$tdir" echo "============================================================================">>$log echo "*********** $chost backup *********** `date`">>$log echo "============================================================================">>$log echo $command >> $log $command >> $log 2>&1
    Skripts ir analogs iepriekšējam, tikai ir samainīti vietām avota un mērķa katalogi, kā arī nav cikla, jo šādā veidā iespējams sinhronizēt tikai tekošā servera datus.
  2. Iestata faila pieejas un izpildes tiesības:
    chown root:root /home/bin/backup_server
    chmod 770 /home/bin/backup_server
  3. root lietotājs palaiž failu un pārliecinās, ka faili tiek nokopēti un nav nekādu kļūdu.

Ieplānošana

  1. Izpilda komandu:
    crontab -e
  2. Atvērtajā redaktorā ievieto rindas:
    # m h  dom mon dow   command
    0 5 * * * /home/bin/backup_servers

Kļūdu novēršana

  1. Ja pieslēdzoties parādās kļūda:
    rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
    rsync error: remote command not found (code 127) at io.c(454) [receiver=2.6.9]
    tad uzstāda rsync arī uz mērķa datora.


Skatīt arī
Saites

Created by Valdis Vītoliņš on 2009/03/26 23:41
Last modified by Valdis Vītoliņš on 2010/11/30 14:58

XWiki Enterprise 2.7.33656 - Documentation
Creative Commons Attribution 3.0 Unported License