rsync同步数据到内网
? 最近公司要求將IDC的APP日志備份到公司辦公網內部,思前想后,結合以前學過的知識,決定用rsync直接推送,即從APP服務器上直接將日志推送到公司內網。這樣避免了在生產服務器上額外安裝更多軟件而且只需要進行簡單的配置,從運維的角度看簡化了排錯步驟,同時降低了安全風險,簡要網絡拓撲圖如下:
??
提示:辦公區服務器192.168.1.202上的rsync服務端口為873,映射到公網10.0.0.10上的端口為51873
實驗環境
IDC機房內網服務器:
[root@server101?~]#?cat?/etc/redhat-release? CentOS?release?6.4?(Final) [root@server101~]#?uname?-m x86_64 [root@Fabric-64?~] [root@server101?~]#?uname?-r 2.6.32-358.el6.x86_64 [root@server101?~]# [root@server101?~]#ifconfig?eth0 eth0??????Link?encap:Ethernet??HWaddr?00:50:56:90:A1:DA??inet?addr:192.168.168.101??Bcast:192.168.168.255??Mask:255.255.255.0公司辦公區機房內部服務器:
[root@server202?~]#?cat?/etc/redhat-release? CentOS?release?6.4?(Final) [root@server202~]#?uname?-m x86_64 [root@Fabric-64?~] [root@server202?~]#?uname?-r 2.6.32-358.el6.x86_64 [root@server202?~]# [root@server202?~]#ifconfig?eth0 eth0??????Link?encap:Ethernet??HWaddr?00:50:56:90:A1:DA??inet?addr:192.168.1.202?Bcast:192.168.168.255??Mask:255.255.255.0說明:這里規定公司辦公區服務器作為rsync的服務端,所以rsync的主服務程序運行在192.268.1.202上,數據流向是從IDC機房內部服務器到辦公網內部服務器
rsync服務端進行配置
①rsync服務配置文件如下:
[root@server1-202?~]#?vim?/etc/rsyncd.conf? #rsync_config uid?=?www gid?=?www use?chroot?=?no max?connections?=?200 timeout?=?300 pid?file?=?/var/run/rsyncd.pid lock?file?=?/var/run/rsync.lock log?file?=?/var/log/rsyncd.log [datacenter] path?=?/data/datacenter/apps/approval ignore?errors read?only?=?false list?=?false #hosts?allow?=?0.0.0.0/24 #hosts?deny?=?0.0.0.0/32 auth?users?=?rsync_backup secrets?file?=?/etc/rsync.password [root@server1-202?~]#②密碼文件內容如下:
[root@server1-202?~]#?cat?/etc/rsync.password? rsync_backup:123456 [root@server1-202?~]#③密碼文件權限設置為600:
[root@server1-202?~]#?chmod?600?/etc/rsync.password? [root@server1-202?~]#?ll?/etc/rsync.password? -rw-------?1?root?root?23?Nov??6?10:57?/etc/rsync.password [root@server1-202?~]#④以守護進程的模式啟動rsync(daemon模式)
[root@server1-202?~]#?rsync?--daemon?--config=/etc/rsyncd.conf [root@server1-202?~]# [root@server1-202?~]#ps?-ef|grep?rsync root?????18170?????1??0?12:27???00:00:00?rsync?--daemon?--config= /etc/rsyncd.conf root?????19989?19916??0?16:51?pts/0????00:00:00?grep?rsync [root@server1-202?~]#客戶端安裝配置
配置之前查看是否安裝rsync
[root@server101?~]#?rpm?-q?rsync rsync-3.0.6-9.el6.x86_64 [root@server101?~]#創建密碼文件,因為客戶端只需要指定登錄密碼即可,該密碼與服務端的密碼配置文件中的密碼要一致
[root@server101?~]#?echo?'123456'?>/etc/rsync.password [root@server101?~]#同時給密碼文件授權600
[root@server101?~]#?chmod?600?/etc/rsync.password [root@server101?~]#?ll?/etc/rsync.password? -rw-------?1?root?root?10?11月??6?10:58?/etc/rsync.password [root@server101?~]#測試同步結果:
[root@server101?~]#rsync?-avz?/etc/hosts?--port=51873?rsync_backup@20.0.0.20 ::datacenter?--password-file=/etc/rsync.password???????????????????????????????????????????????????????????sending?incremental?file?list hosts sent?734?bytes??received?27?bytes??1522.00?bytes/sec total?size?is?3117??speedup?is?4.10 [root@server101?~]#?
服務端202上查看同步結果:
[root@server1-202?approval]#?pwd /data/datacenter/apps/approval [root@server1-202?approval]#? [root@server1-202?approval]#?ll -rw-r--r--?1?www?www???????3117?Oct?29?14:13?hosts [root@server1-202?approval]#?發現文件hosts已經同步到rsync服務器的目錄/data/datacenter/apps/approval,至此數據同步完成解析來做定時任務
設置定時任務,讓該任務在每天晚上凌晨1點開始執行同步前一天的數據:
[root@server101?~]#mkdir?/server/scripts [root@server101?~]#cd?/server/scripts [root@server101?~]#vim?rsync-log.sh #!/bin/bash rsync?-avz?/usr/local/nginx/logs/app_$(date?-d?"1?day?ago"?+%Y-%m-%d).log?--port= 51873?rsync_backup@20.0.0.20::datacenter?--password-file=/etc/rsync.password [root@server101?~]#注意:這里不要忘記了給rsync-log.sh賦予可執行權限
[root@server101?~]#chmod?+x?rsync-log.sh [root@server101?~]#? [root@server101?~]#crontab?-e #rsync?app?logs?to?datacenter?every?01:00:00 *?01?*?*?*?/bin/sh?/server/scripts/rsync-log.sh?>/dev/null?2>&1 [root@server101?~]#保存,重啟crontab服務
[root@server101?~]# [root@server101?~]#?/etc/init.d/crond?restart 停止?crond:?????????????????????????????????????[確定] 正在啟動?crond:??????????????????????????????????[確定] [root@server101?~]#cp 與 rsync 同名目錄同步覆蓋關系?
同名目錄同步覆蓋方法:
1、cp -rp dir1/* ?dir2/
同名不覆蓋不提示:yes no| cp -rp dir1/* ?dir2/
同名覆蓋不提示:\cp -rp dir1/* ?dir2/
2、rsync -avz dir1/ dir2/ ? ??
?or ?rsync -avz dir1/* ?dir2/
同名同步后不刪除:rsync -avz dir1/* dir2/
同名同步后刪除dir1同步過去的原文件 :rsync -avz dir1/* dir2/ --remove-sent-files
至此rsync實現遠程日志文件同步實驗配置完成,如有不妥請各位多多指點!
轉載于:https://blog.51cto.com/ucode/1710413
總結
以上是生活随笔為你收集整理的rsync同步数据到内网的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java日志性能那些事(转)
- 下一篇: [android] 手机卫士手机定位的原