RSYNC備份-使用rsync指令 @ IT Ranger--Pippeng :: 隨意窩 Xuite日誌





  • Powered by Xuite
  • 累積 | 今日
    loading......
  • 站內文章搜尋
  • 文章搜尋
  • 廣告
  • 平均分數:0 顆星
    投票人數:0
    我要評分:
    1. 沒有新回應!
    200903100003RSYNC備份-使用rsync指令

    RSYNC備份-使用rsync指令

    rsync是Linux上做異地備援家庭常備良方
    他的功能主要是能透過網路做異地備份
    而rsync的使用有2種方式
    1.使用rsync指令配合ssh做檔案傳輸
    2.使用rsync daemon


    先來介紹第一種
    使用rsync指令配合ssh做檔案傳輸
    以下要做備份的稱為Client
    當成備份目的地的稱為Server

    這種方式主要是配合ssh做加密傳送
    檔案傳輸的方向分為2種

    A)方式可以由Client主動傳送到Server端做備份- Client > Server
    B)或是由Server端到各Client端將備份檔傳回來- Server < Client
    我習慣由Server端來做統一控制所以採用B方向
    以下範例以Server端連線Client並把檔案備份回來存放

    先在Client做本地備份,再由Rsync主機將備份檔做異地備份
    使用tar將檔案備份到/backup
    先建立遠端rsync要登入的帳號
    #useradd rsyncadmin
    #passwd rsyncadmin

    再建立/backup並讓rsyncadmin有寫入的權限
    #mkdir /backup
    #chown rsyncadmin.root /backup
    #chmod 770 /backup

    本例每天早上03:20將網頁目錄備份到/backup
    登入root在crontab新增一筆記錄
    20 3 * * * tar -czvf /backup/html_bak.tar.gz /var/www/html/
    這樣就可以讓Rsync主機不需要使用root來登入做抓備份檔了

    再來就是讓遠端的Rsync主機連到Client端將/backup裡面的檔案做異地備份:

    因為我們要使用ssh來做加密,所以要先讓Server端使用ssh連線到Client時不需要輸入密碼,
    這樣才能放到crontab做排程備份,
    在備份主機上建立ssh key金鑰並傳送到Client,
    #su -
    #ssh-keygen -t dsa 
        (也可以使用rsa加密 #ssh-keygen -t rsa)
    執行後會在家目錄裡面的.ssh/產生2個檔案id_dsa與id_dsa.pub
    其中id_dsa為私密金鑰,id_dsa.pub為公開金鑰
    要將id_dsa.pub內容傳送到Client端的家目錄下的.ssh/autorized_keys裡面     

    預設家目錄內是沒有.ssh這目錄,建議讓系統自動產生
    到Client端(要備份的主機)登入rsyncadmin使用ssh讓系統產生.ssh這目錄
    $ssh -p 2341 127.0.0.1        (注意上一篇將ssh port改成2341 port)  

    回到Rsync主機,將id_dsa.pub內的金鑰傳送到Client的autorized_keys
    有2種方式
    1.就是使用ssh的scp
    到Rsync主機上
    #scp -P 2341 ~/.ssh/id_dsa.pub rsyncadmin@web.example.com:~/rsync.id_dsa.pub      
    (注意這裡Port的參數是-P)
    到Client上登入rsyncadmin,將金鑰匯入到autorized_keys

    $cat rsync.id_dsa.pub >> ~/.ssh/autorized_keys     
    (autorized_keys可以存放多組金鑰,所以我們使用>>)

    再來介紹一個RedHat才有的指令,將上面複雜的動作簡化成一個
    2.使用ssh-copy-id
    在Rsync主機上直接使用指令將金鑰匯入到Client端
    #ssh-copy-id -i rsyncadmin@web.example.com

    以上就完成了使用ssh登入不需要指令了

    再來就是設定rsync定時備份了

    在Rsync主機上寫一個Shell Script或是直接寫到crontab上
    非常簡單,但是但是因為我們使用ssh加密與非標準的22Port所以要使用--rsh或-e這參數來使用ssh
    --rsh='ssh -p 2341'或是 -e 'ssh -p 2341' ,注意要使用' '

    /usr/bin/rsync -avz --delete --ignore-errors --progress  --rsh='ssh -p 2341' syncadmin@web.example.com:/backup/ /rsyncbak/web/

    完成

    說明一下上面用到的參數man rsync
    -a 為檔案模式,主要是將檔案的權限與時間保留,等於-rlptgoD這幾個參數,但是不包含-H-A-X
       就是不含檔案的Hard Link與ACLs與xattrs屬性
    -v 輸出訊息
    -z 壓縮檔案傳送
    --delete 當傳送端沒有的檔案而目的地端有的話,將目的地的檔案刪除
    --ignore-errors 忽略錯誤進行--delete刪除
    --progress 傳送時會顯示%進度

    這樣就可以了
    因為是使用ssh來傳送,所以iptables不需要額外開放其他Port

    以上完成

     

    廣告

    沒有上一則|日誌首頁|沒有下一則
    回應