<samp id="0l9hf"></samp>
<td id="0l9hf"><option id="0l9hf"></option></td>

  • CentOS下使用Rsync和Crontab實現無人值守定時同步

    如題實現無人值守定時同步,為員員們節省工作時間,提高工作效率,本文采用Centos系統,用到了rsync,crontab等技術。

    rsync的一些特性

    1. 能更新整個目錄和樹和文件系統
    2. 有選擇性的保持符號鏈鏈、硬鏈接、文件屬于、權限、設備以及時間等
    3. 對于安裝來說,無任何特殊權限要求
    4. 對于多個文件來說,內部流水線減少文件等待的延時
    5. 安全,能用 rsh、ssh 或直接端口做為傳輸端口,或者socket連接
    6. 支持匿名 rsync 同步文件,是理想的鏡像工具

    功能分析

    1. 配置此功能,首先明確的是,在角色上,需要服務端和客戶端 (1:N)
    2. 服務端,主要負責文件的首次上傳,更新操作等
    3. 客戶端,會隨著服務端的文件變化進行同步-(下載,更新,刪除等)
    4. 在操作上,最簡單的配置比例為【服務端:客戶端 = 1:1】,例如,本次的實際操作中,配置了一個服務端(IP:192.168.1.119),其中的一個客戶端(IP:192.168.1.121),后期添加了另一個客戶端(IP:192.168.1.126)

    配置操作

    (1). 服務端配置

    ①. 安裝rsync
    CentOS默認安裝了此軟件,運行命令rsync可查看是否安裝:

    rsync

    如果沒有,使用如下命令安裝:

    yum install rsync

    ②. 進行配置文件的修改
    rsync的主要有以下三個配置文件:

    rsyncd.conf (主配置文件)、rsyncd.passwd (密碼文件)

    服務器配置文件( /etc/rsyncd.conf ),該文件默認不存在,需要創建它

    touch /etc/rsyncd.passwd  #創建用戶密碼文件
    chmod 600 rsyncd.passwd  #將rsyncd.passwd權限要設為600, 否則無法備份成功

    修改rsyncd.conf
    rsyncd.conf是rsync服務器主要配置文件。以下為的文件信息,可作參考或進行進一步的修改

    #This is the rsync daemon configuration 
    
    #global settings 
    pid file = /var/run/rsyncd.pid
    
    #默認端口是873,可自定義
    port = 873
    
    #指定服務端IP地址
    address = 192.168.1.119
    
    lock file = /var/run/rsyncd.lock
    log file = /var/log/rsync.log
    gid = root
    uid = root
    
    #module settings 
    
    [backup]
    path = /opt/lampp/htdocs/gt-store-live
    use chroot = no
    max connections = 15
    read only = no
    write only = no
    list = no
    ignore errors = yes
    timeout = 120
    auth users = root
    secrets file = /etc/rsyncd.passwd
    
    [dbbackup]
    path = /home/backup/database
    use chroot = no
    max connections = 15
    read only = no
    write only = no
    list = no
    ignore errors = yes
    timeout = 120
    auth users = root
    secrets file = /etc/rsyncd.passwd
    
    設定rsyncd.passwd密碼文件
    密碼文件格式很簡單,rsyncd.passwd 的內容格式為:user:password
    vim /etc/rsyncd.passwd

    添加信息:root:root123

    修改rsyncd.passwd屬性和權限

    chown root:root /etc/rsyncd.passwd  
    chmod 600 /etc/rsyncd.passwd

    (2). rsync服務器啟動

    在此,只介紹讓rsync以服務器模式運行的daemon參數方式,此時為服務端操作(IP:192.168.1.119)如下依然為【root】 權限下操作

    ①. 以 root 身份啟動rsync

    /usr/bin/rsync --daemon

    ②. 查看相應進程

    lsof -i :873

    【注:】修改rsync配置后服務器端需要重啟

    killall rsync
    rsync --daemon 
    lsof -i :873

    ③. rsync服務器和防火墻
    Linux防火墻是用iptables,所以們至少在服務器端要讓你所定義的rsync服務器端口通過,客戶端上也應該讓通過。

    iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
    service iptables restart

    (3). 客戶端:

    ①. 安裝 rsync:

    yum install rsync

    ②. 配置密碼文件rsyncd.passwd(服務器密碼,文件位置自定義)

    echo root123>rsyncd.passwd
    chmod 600 rsyncd.passwd

    ③. 主要命令
    1). 列出rsync 服務器上的所提供的同步內容

    #此處需要手動輸入密碼
    rsync --list-only 192.168.1.119::backup
    rsync --list-only 192.168.1.119::dbbackup
    #此處不需要輸入密碼
    rsync --list-only --password-file=/home/backup/cron/rsyncd.passwd root@192.168.1.119::backup
    rsync --list-only --password-file=/home/backup/cron/rsyncd.passwd root@192.168.1.119::dbbackup

    2). 文件同步命令

    #此處需要手動輸入密碼
    rsync -avzP 192.168.1.119::backup /home/backup
    #此處不需要輸入密碼
    rsync -avzP --password-file=/home/backup/cron/rsyncd.passwd root@192.168.1.119::backup /home/backup

    3). 客戶端上的數據要與服務器端完全一致

    #此處需要手動輸入密碼
    rsync -avzP --delete 192.168.1.119::backup /home/backup
    #此處不需要輸入密碼
    rsync -avzP --delete --password-file=/home/backup/cron/rsyncd.passwd root@192.168.1.119::backup /home/backup

    ④. 定時同步無人值守:
    (1). 一種方法:直接在 /etc/crontab中添加命令

    vi /etc/crontab

    或者通過 crontab進行設定 ,執行命令:crontab -e

    */1 * * * *  rsync -avzP --password-file=/home/backup/cron/rsyncd.passwd root@192.168.1.119::backup /home/backup

    (2). 第二種方法:腳本實現

    vim /etc/ftp-update-backup.sh #自定義即可

    添加如下代碼:

    #!/bin/bash
    rsync -avzP --password-file=/home/backup/cron/rsyncd.passwd root@192.168.1.119::backup /home/backup

    通過crontab設定,讓這個腳本每10分鐘(測試)運行一次。執行命令:

    */10 * * * * /home/backup/cron/ftp-update-backup.sh

    (3). 上述方法配置好后,要重啟crond服務器

    killall crond #注:殺死crond服務器的進程; ps aux |grep crond # 注:查看一下是否被殺死; /usr/sbin/crond #注:啟動 crond 服務器;

    2020年8月19日補充:

    結束rsync進程
    ps -ef|grep rsync|grep -v grep|awk ‘{print $2}’|xargs kill -9

    cat /var/run/rsyncd.pid | xargs kill -9

    啟動服務錯誤:
    failed to create pid file /var/run/rsyncd.pid: File exists
    解決方法:
    rm -rf /var/run/rsyncd.pid
    然后再啟動:
    rsync –daemon
    看看是否成功:
    ps aux | grep rsync

    lsof -i :873

    網友應用經驗分享:

    1、小心有坑
    rsrync的配置有兩個坑:1)配置文件/etc/rsyncd.conf中,參數后面不要用#注釋;2)服務端和客戶端密碼文件的權限一定要是600,否則認證失敗。

    2、客戶端權限問題
    客戶端可以用任何用戶來執行,只要該用戶對本地目錄有足夠的權限就可以了。

    3、日志文件的問題
    小心服務端的日志文件(log file)越積越大。

    4、效率問題
    rsync同步文件采用的是增量同步的方法,本質上就是在傳輸文件之前,先判斷客戶端與服務器目錄的文件變量情況,如果待同步目錄下的文件太多,這個判斷很費時間。

    5、rsync+sersync架構
    上面提到的rsync存在效率問題,最終的解決方法是采用rsync+sersync架構。
    1)sersync可以記錄被監聽目錄中發生變化的(增,刪,改)具體某個文件或目錄的名字;
    2)rsync在同步時,只同步發生變化的文件或目錄(每次發生變化的數據相對整個同步目錄數據來說很小,rsync在遍歷查找對比文件時,速度很快),因此效率很高。

    6、防火墻讓873端口通過

    7、啟用rsyncd服務并開機自啟動
    1)啟動rsyncd服務。
    systemctl start rsyncd
    2)把rsyncd服務設置為開機自啟動。
    systemctl enable rsyncd

    從主服務器上實時增量備份文件到另外一臺服務器上.

    解決同步不需要輸入密碼的問題:

    先在主服務器上創建無密碼的ssh證書.

    cd /root/
    ssh-keygen -t rsa

    一直按回車就會得到兩個ssh證書文件, 一個id_rsa秘鑰, 一個id_rsa.pub公鑰.

    查看公鑰證書

    cat /root/.ssh/id_rsa.pub

    然后去備份服務器上

    cd /root/
    mkdir /root/.ssh
    vi id_rsa.pub

    然后把之前在主服務器上創建的公鑰id_rsa.pub內容復制到這里

    把公鑰增量添加到~/.ssh/authorized_keys里面

    cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

    再更改公鑰文件權限

    chmod 600 /root/.ssh/authorized_keys

    更改sshd配置文件

    vi /etc/ssh/sshd_config

    把#AuthorizedKeysFile .ssh/authorized_keys前面的#去掉, 讓其保持為

    AuthorizedKeysFile .ssh/authorized_keys

    然后重啟備份服務器的ssh

    service sshd restart

    設置完成后再會主服務器
    先測試一下是否可以免密碼登錄備份服務器

    ssh root@備份服務器的ip

    如果能正常登錄就可以.

    然后在備份服務器上操作

    vi /etc/rsyncd.conf

    配置如下

    [backup]
    # destination directory for copy
    path = /home/backup
    # hosts you allow to access
    hosts allow = 1.1.1.1
    hosts deny = *
    list = true
    uid = root
    gid = root
    read only = false


    相關文章:

    Linux使用expect和rsync實現無人值守自動同步
    CentOS下使用Rsync和Crontab實現無人值守定時同步
    CentOS等Linux服務器配置使用Rsync同步及Crontab定時任務

    鄭重聲明:

    1 本資源來源于互聯網,資源的版權歸資源原作者所持有,受《中華人民共和國著作權法》等相關法律保護。

    2 由于無法和原作者取得聯系,所以上傳的部分資源無法先通過原作者的同意就分享給大家了,如本資源侵犯了您(原作者)的權益,請聯系我們(微信號 wenyan90s),我們會立馬刪除您的資源,并向您表達誠摯的歉意!

    3 本站是一個公益型網站,分享資源的目的在于傳播知識,分享知識,收取一點點打賞的辛苦費是用于網站的日常運營開支,并非用于商業用途。

    4 本站資源只提供學習和參考研究使用,使用過后請在第一時間內刪除。本站不承擔資源被單位或個人商用帶來的法律責任。

    發表評論

    電子郵件地址不會被公開。

    Captcha Code

    国产精品午夜福利在线观看,av色片在线观看,男生看的黄色网站在线,黄片a片视频黄色
    <samp id="0l9hf"></samp>
    <td id="0l9hf"><option id="0l9hf"></option></td>