Rsync ile CentOS8 Üzerinde Dizin Senkronizasyonu
Rsync ile dizin senkronizasyonu yapmak için öncelikle sunucular arasında parolasız erişimi sağlamak gerekmektedir.
1- SSH Paketinin Kurulması
Senkronizasyon yapılacak sunucuların her ikisine gidilerek,
yuminstallssh
komutu ile SSH paketi kurulur.
2- SSH Konfigürasyon Ayarlarının Yapılması
Her ikisi sunucuda da,
cd ~mkdir .sshtouch .ssh/config .ssh/known_hosts .ssh/authorized_keys
komutları ile gerekli SSH dizin yapısı oluşturulur. Daha sonra ilk sunucuda,
nano .ssh/config
ile konfigürasyon dosyası açıldıktan sonra,
Host server02# İkinci sunucu kısa adı HostName 10.0.0.2# İkinci sunucu ip adresi User root# Rsync için kullanılacak user Port 22
ikinci sunucunun bilgileri girilir. Aynı işlem ikinci sunucuda da, birinci sunucunun bilgileri girilerek uygulanır.
3- SSH Anahtarının Oluşturulması
SSH anahtarı oluşturmak için her iki sunucuda da,
ssh-keygen
komutu çalıştırılır. Gelen sorular boş geçilerek anahtar ikilisi oluşturulur.
ssh-keygenEnter fileinwhich to save the key(/root/.ssh/id_rsa):Enter same passphrase again:Your public key has been savedin /root/.ssh/id_rsa.pub.SHA256:*************************** username@pc+---[RSA 3072]----+|..B+ || ||o.o.. ||+* .. o ||+.o. S.. + ||. ... oo o. E o||.... + ||+o +sssss o ||+o*o.*+o |+----[SHA256]-----+
Her iki sunucuda da anahtar ikilisi oluşturulduktan sonra birinci sunucuda,
ssh-copy-id server02
ve ikinci sunucuda,
ssh-copy-id server01
komutları çalıştırılarak anahtarlar birbirlerine kopyalanır. Kopyalama işleminden sonra birinci sunucuda,
ssh server02exit
ve ikinci sunucuda,
ssh server01exit
komutları çalıştırıldığında parolasız erişimin sağlandığı görülmelidir. SSH bağlantılarının sonlandırılması için her bağlantı sonrasında exit komutu çalıştırılmalıdır.
4- Betiğin Sisteme Eklenmesi
4.1. - Gerekli Paketlerin Kurulması
yuminstallinotify-tools
ile gerekli paketler kurulur.
4.2. - Dosya Senkronizasyonu Betiğinin Sisteme Yerleştirilmesi
Gerekli dizini oluşturmak için,
mkdir /usr/share/rsync
komutu kullanıldıktan sonra,
nano /usr/share/rsync/file-sync.sh
komutu ile ilgili dosya açılır ve içerisine,
whileinotifywait-r-e modify,attrib,close_write,move,create,delete /bu/sunucuda/esitlenecek/dizin/;dorsync-aAXru--progress--delete /bu/sunucuda/esitlenecek/dizin/ server02:/karsi/sunucuda/esitlenecek/dizin/done
betiği yerleştirilir.
Bu betikte,/bu/sunucuda/esitlenecek/dizin/ yerine betiğin yerleştirileceği sunucuda eşitlenmesi istenen dizinin yolu verilmelidir.
/karsi/sunucuda/esitlenecek/dizin/ yerine ise, karşı sunucuda eşitlenmesi istenen dizinin yolu verilmelidir.
Bu uygulama her iki sunucuya da çapraz olarak yapılmalıdır.
5- Servis Dosyalarının Oluşturulması
Yukarıda hazırlanan betiklerin servis haline getirilip sürekli olarak senkronizasyonun sağlanması gerekmektedir. Bunun için,
nano /etc/systemd/system/rsync-client.service
komutu ile servis dosyası açılır ve içerisine,
[Unit]Description= SyncServiceAfter= network.target[Service]PIDFile= /run/syncservice/syncservice.pidUser= rootGroup= rootExecStartPre= /bin/mkdir /run/syncserviceExecStart= /bin/bash /usr/share/rsync/file-sync.shExecReload= /bin/kill-s HUP$MAINPIDExecStop= /bin/kill-s TERM$MAINPIDExecStopPost= /bin/rm-rf /run/syncservicePrivateTmp=true[Install]WantedBy= multi-user.target
dosyası eklenir.
Bu dosyanın değiştirilmesine gerek yoktur. Her iki sunucuya da aynı şekilde eklenmelidir.
6- Servislerin Başlatılması
Servisler hazırlandıktan sonra,
systemctl daemon-reloadsystemctl start rsync-client.servicesystemctlenablersync-client.service
işlemleri her iki sunucuda da yapılmalıdır.
Servisin doğru çalıştığı, çıktının aşağıda yer alan çıktıya benzerliği ile kontrol edilebilir.
[root@localhost ~]# systemctl status rsync-client.service● rsync-client.service - SyncService Loaded: loaded(/etc/systemd/system/rsync-client.service; disabled; vendor preset: disabled) Active: active(running) since Tue 2021-09-28 06:10:30 EDT; 13s ago Process: 8286ExecStopPost=/bin/rm-rf /run/syncservice(code=exited,status=0/SUCCESS) Process: 8284ExecStop=/bin/kill-s TERM$MAINPID(code=exited,status=0/SUCCESS) Process: 8289ExecStartPre=/bin/mkdir /run/syncservice(code=exited,status=0/SUCCESS) Main PID: 8291(bash) Tasks: 2(limit: 4755) Memory: 592.0K CGroup: /system.slice/rsync-client.service ├─8291 /bin/bash /usr/share/rsync/file-sync.sh └─8294 inotifywait-r-e modify,attrib,close_write,move,create,delete /root/yedek/Sep 28 06:10:30 localhost.localdomain systemd[1]: rsync-client.service: Succeeded.Sep 28 06:10:30 localhost.localdomain systemd[1]: Stopped SyncService.Sep 28 06:10:30 localhost.localdomain systemd[1]: Starting SyncService...Sep 28 06:10:30 localhost.localdomain systemd[1]: Started SyncService.Sep 28 06:10:30 localhost.localdomain bash[8291]: Setting up watches. Beware: since-r was given, th>Sep 28 06:10:30 localhost.localdomain bash[8291]: Watches established.
NOT : Senkronizasyonda yaşanan gecikmeler veri kaybına sebep olabilir !
Top comments(0)
For further actions, you may consider blocking this person and/orreporting abuse