Rsync backup na CentOS

3. Publiczny stały IP 3.1. Konfiguracja Serwera Tworzymy plik z informacją, jakie zasoby chcemy udostępnić przez rsync /etc/rsyncd.conf #vi /etc/rsyncd.conf max connections = 2 log file = /var/log/rsync.log timeout = […]

3. Publiczny stały IP

3.1. Konfiguracja Serwera

Tworzymy plik z informacją, jakie zasoby chcemy udostępnić przez rsync /etc/rsyncd.conf

#vi /etc/rsyncd.conf


max connections = 2
log file = /var/log/rsync.log
timeout = 300 
[backup]
comment = Backup Folder
path = /sciezka/do/katalogu/który/chcemy/backupować
read only = yes
list = yes
uid = nobody
gid = nobody
hosts allow = 4.3.2.1/32
auth users = Backup123456
secrets file = /etc/rsyncd.secrets

[backup2]
comment = Backup Folder
path = /sciezka/do/katalogu/który/chcemy/backupować2
read only = yes
list = yes
uid = nobody
gid = nobody
hosts allow = 4.3.2.1/32
auth users = Backup123456
secrets file = /etc/rsyncd.secrets

  • [backup] – nazwa zasobu
  • path – ścieżka określająca co będziemy backup’ować (ten katalog I wszystkie podkatalogi)
  • read only – jeżeli mamy publiczny IP – zostawiamy „yes”, jeżeli natomiast nie mamy stałego IP zmieniamy na „no”
  • auth users – nazwa użytkownika, który będzie mógł wykonać backup
  • secrets file – plik z hasłem
  • auth users – nazwa użytkownika, który może wykonywać backup
  • hosts allow – IP zewnętrze routera GW-2, zapewnia dodatkowa ochronę przed niechcianymi wizytami

Tworzymy plik z hasłem i zabezpieczamy go przed dostępem dla osób niepowołanych


# echo Backup123456:moje_hasło > /etc/rsyncd.secrets
# chown root:root /etc/rsyncd.secrets
# chmod 600 /etc/rsyncd.secrets

Edytujemy plik „/etc/xinetd.d/rsync” i zmieniamy linię:

disable = yes

na:

disable = no

Po zmianie powinno to wyglądać tak:

# cat /etc/xinetd.d/rsync


service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

Sprawdzamy czy w pliku „/etc/services” jest następująca linia, jeżeli nie ma dodajemy ją.

rsync 873/tcp

Restartujemy demona xinetd

# /etc/init.d/xinetd restart

Sprawdzamy czy rsync nasłuchuje na swoim porcie


# netstat -nlp | grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 22338/xinetd

3.2. Konfiguracja klienta

Klient jest komputerem, na którym będzie lądował nasz backup. W związku z tym trzeba utworzyć katalog w takim miejscu drzewa systemu plików aby mieć dość miejsca na kopie danych. W naszym przypadku będzie to „/home/backup”
Utworzymy tam również katalog dla skryptu/ów odpalanych z cron’a oraz logów „/home/ backup/scripts” i „/home/backup /log”

Sprawdzamy czy starczy nam miejsca:


#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda2 4.8G 1.4G 3.2G 31% /
/dev/xvda3 1.9G 178M 1.7G 10% /var
/dev/xvda1 99M 22M 73M 23% /boot
tmpfs 1.0G 0 1.0G 0% /dev/shm
/dev/sda1 739G 558G 144G 80% /home/backup

Tworzymy katalogi:


#mkdir /home/backup
#mkdir /home/backup/scripts
#mkdir /home/backup/log

Dane będą backup’owane do katalogu /home/backup, w tym celu tworzymy w katalogu /home/backup/scriprts skrypt wykonujący faktyczny backup:

#vi /home/backup/scripts/backup


echo `date` ": SCRIPT END"
echo ""
echo "" 
echo „”
echo „***************************************************************”
echo `date` „: SCRIPT STARTED”

echo „—————————————–”
echo `date` „: Serwer1 Babkup1 Start”
/usr/bin/rsync -avz –delete Backup123456@1.2.3.4::backup /home/backup/Serwer1_Backup1 –password-file /home/backup/scripts/backup/rsyncd.secret
echo `date` „: Serwer1 Babkup1 End”
echo „—————————————–”

echo „—————————————–”
echo `date` „: Serwer1 Babkup2 Start”
/usr/bin/rsync -avz –delete Backup123456@1.2.3.4::backup2 /home/backup/Serwer1_Backup2 –password-file /home/backup/scripts/backup/rsyncd.secret
echo `date` „: Serwer1 Babkup1 End”
echo „—————————————–”

echo `date` ": SCRIPT END"
echo ""
echo ""

Możemy dodać dowolną ilość serwerów i katalogów. Ważne, żeby klient wyrobił się z backup’em w ciągu nocy, ale to już zależy od łącza i ilości zmian na serwerach.

Kluczowa jest linia:

/usr/bin/rsync -avz --delete Backup123456@1.2.3.4::backup2 /home/backup/Serwer1_Backup2 --password-file /home/backup/scripts/backup/rsyncd.secret

Rozbierzemy więc ją na części pierwsze:

  • /usr/bin/rsync – ścieżka do programu rsync
  • -avz –delete – opcje programu rsync, polecam polecenie #man rsync z konsoli, jest co czytać.
  • Backup123456 – „auth user” z konfiguracji serwera
  • 1.2.3.4 – IP zewnętrzne routera GW-1
  • backup2 – „nazwa zasobu” z konfiguracji serwera
  • /home/backup/Serwer1_Backup2 – ścieżka gdzie chcemy, aby znalazł się nasz backup
  • –password-file /home/backup/scripts/backup/rsyncd.secret – ścieżka do pliku z hasłem takim samym jak w konfiguracji serwera, ale bez nazwy użytkownika

Tworzymy i zabezpieczamy plik z hasłem:


# echo moje_hasło > /home/backup/scripts/backup/rsyncd.secret
# chown root:root /home/backup/scripts/backup/rsyncd.secret
# chmod 600 /home/backup/scripts/backup/rsyncd.secret

Uwaga:
Ten plik hasła nie zawiera nazwy użytkownika a jedynie samo hasło!

Dodajemy zadanie do listy cron’a:


# crontab –e
0 22 * * * /home/Scripts/backup_remote >> /home/backup/log/backup_remote_`/bin/date +\%Y\%m\%d-\%H\%M`.log

Nasz skrypt zacznie sie wykonywać o godzinie 22.00 i wszystkie logi zrzuci do pliku o nazwie backup_remote_DZISIEJSZA_DATA w katalogu /home/backup/log

A wygląda to tak:


# ls –All home/backup/log
...
-rw-r--r-- 1 root root 112568 Mar 22 23:05 backup_remote_20110322-2200.log
-rw-r--r-- 1 root root 40579 Mar 24 00:15 backup_remote_20110323-2200.log
-rw-r--r-- 1 root root 58143 Mar 24 23:26 backup_remote_20110324-2200.log
...

3.3. Konfiguracja routera GW-1

Pozostaje jeszcze kwestia przekierowania portu na routerze GW-1. W zależności od tego, jaki macie router będzie to wyglądać inaczej. Na routerach Cisco wystarczy jedna linijka:


>enable
#conf term
(config)# ip nat inside source static tcp 192.168.1.1 873 1.2.3.4 873 extendable
  • 192.168.1.1 – IP Serwera w sieci wewnętrznej
  • 1.2.3.4 – Zewnętrzny adres IP routera GW-1

Strony: 1 2 3