Rsync attālinātu kopiju veidošana

Vispirms jāsagatavo:  Open SSH serveris
Vispirms vēlams:  SSH pieteikšanās bez paroles

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 mapju struktūru no attālinātiem serveriem uz lokāla datora.

Saturs

Uzstādīšana

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 mapē /home/backup.
  2. Arī uz lokālā datora (failu servera) visas kopijas veido mapē /home/backup, katra atsevišķa servera kopijas izvieto apakšmapē, 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 mapes.
    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 mapē  /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 mapes  /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. Mapē /home/bin izveido failu backup_servers ar sekojošu saturu:

    #!/bin/bash
    user="valdis"
    # List of servers, delimited by spaces
    hosts="hosta hostb hostc hostd"
    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 --delete-excluded --ignore-errors --exclude *old* $user@$chost:/home/backup/ $tdir$chost"
      command="rsync -avzr --delete-after --delete-excluded --ignore-errors $user@$chost:/home/backup/ $tdir$chost"
      echo "============================================================================">>$log
      echo "*********** $chost backup  *********** `date`">>$log
      echo "============================================================================">>$log
      echo $command >> $log
      $command >> $log 2>&1
    don
  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šmapes,
    5. --delete uz lokālā datora izdzēst uz mērķa datora vairs neesošus mapes,
    6. --exclude *old* izlaist failus un mapes, 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. Mapē /home/bin izveido failu backup_server ar sekojošu saturu:

    #!/bin/bash
    shost="bubba"
    sdir="/home/"
    thost="files"
    tuser="valdis"
    tport="22"
    tdir="/home/backup/$shost/"
    log="/home/backup/backup_${shost}_log"

    ## add -n for dry run (test only)
    command="rsync -e \"ssh -p $tport\" -avzr --delete-after --delete-excluded --exclude-from /home/bin/backup_exclude  $sdir $tuser@$thost:$tdir"
    echo "============================================================================">>$log  
    echo "*********** $shost backup  *********** `date`">>$log  
    echo "============================================================================">>$log  
    echo $command >> $log
    eval "$command >> $log 2>&1"
  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 6 * * * /home/bin/backup_servers

Kļūdu novēršana

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.

Saites

Alternatīvas

Vispirms jāsagatavo:  Open SSH serveris
Vispirms vēlams:  SSH pieteikšanās bez paroles

 

Izveidojis Valdis Vītoliņš 2009-03-26 21:41
Pēdējais mainījis Valdis Vītoliņš 2017-09-02 15:37
 
Xwiki Powered
Creative Commons Attribution 3.0 Unported License