第一種:臨時起意
- 從scp談起
例如,我有兩部電腦,一部是 163.30.142.12, 一部是163.30.142.8
我想要把163.30.142.12裡 /tycx/yes 目錄下的所有資料 複製到 163.30.142.8的 var/www/html目錄下可以用
先登入 163.30.142.12
然後使用
scp -r /tycx/yes/* root@163.30.142.8:/var/www/html/yes 就可以把 163.30.142.12的/tycx/yes目錄(含子目錄和底下的檔案)複製到163.30.142.8 /var/www/html 目錄底下,前題是163.30.142.8的/var/www/html目錄下要先建好yes目錄。
反過來用
scp -r root@163.30.142.8:/var/www/html/yes/* /tycx/yes/ 就會複製回來。
使用scp作為備份還原,僅適合資料量較少的情形,因為scp指令和cp相同就是努力的複製,不會先檢查是否相同。
scp
-r /tycx/yes/* root@163.30.142.8:/var/www/html/yes root@163.30.142.8's password: (輸入密碼) |
另外,scp使用時會先詢問 root的密碼。(scp是透過ssh通道傳送)
若要省掉詢問可以利 用 ssh-keygen 來做出公用和私有鑰匙,並傳送 public key 到163.30.142.8給root
使其信任本機的登入。(反過來,163.30.142.8的root用ssh-keygen 來做出公用和私有鑰匙,並將public key 傳給tycx也可以)
- rsync基本使用
rsync -av /etc /tmp (將 /etc/ 的資料備份到 /tmp/etc 內,同cp)
rsync -av /tycx/yes root@163.30.142.8:/var/www/html 功能如同 scp -r /tycx/yes/* root@163.30.142.8:/var/www/html/yes
rsync -av -e ssh /tycx/yes root@163.30.142.8:/var/www/html 功能同上但是透過ssh通道
第二種利用公用和私用鑰匙 (製作 public keys & private keys)
利用 ssh-keygen 來做出公用和私有鑰匙,並傳送 public key 到遠端機器使其信任本機登入。
tycx@gmail:~$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/tycx/.ssh/id_dsa): Enter passphrase (empty for no passphrase): (直接輸入ENTER) Enter same passphrase again: (直接輸入ENTER) Your identification has been saved in /tycx/.ssh/id_dsa. Your public key has been saved in /tycx/.ssh/id_dsa.pub. The key fingerprint is: ed:56:d9:06:f2:3d:ca:3d:29:05:f1:97:1c:4a:05:0a tycx@gmail.nlps.tyc.edu.tw |
tycx@gmail:~$ cd /tycx/.ssh tycx@gmail:~/.ssh$ ls id_dsa id_dsa.pub known_hosts |
tycx@gmail:~/.ssh$ scp id_dsa.pub root@163.30.142.8:/root/ root@163.30.142.8's password: id_dsa.pub 100% 616 0.6KB/s 00:00 |
[root@x ~]# ls 1 id_dsa.pub mbox sql [root@x ~]# cat id_dsa.pub >> .ssh/authorized_keys [root@x ~]# cd .ssh [root@x .ssh]# ls authorized_keys [root@x .ssh]# |
tycx@gmail:~/.ssh$ ssh root@163.30.142.8 Last login: Fri Oct 21 13:42:24 2011 from web.nlps.tyc.edu.tw |
如此就不用輸入密碼就直接登入了!
rsync 配合ssh通做備份實例
有了以上的key的設定,我們就可以用rsync自由的備份還原了。
1. 備份程式碼
2. 備份資料庫
rsync -av -e ssh /tycx/moral root@163.30.142.8:/var/www/html
rsync -av -e ssh /var/lib/mysql/moral root@163.30.142.8:/var/lib/mysql (權限不足必須使用root)
設定到 crontab裡就可以定時備份了。
參考
使 用 SSH 配合憑證來遠端備 份檔案 (rsync) 將public key的使用範圍限縮,這樣才比較安全。
rsync + ssh 使用不同 port 的話, 需要加上 -e "ssh -p port_number", ex: 假設遠端的 ssh 機器是用 1234 port, 指令會如下述:
rsync -e "ssh -p 1234" -avz --bwlimit=3000 REMOTE_HOST:data_path .
第三種:利用rsync server
- rsync server設定 (server.domain)
/etc/rsyncd.conf
[serverB]
path = /var/www/html/course
auth_users = web1
uid = root
gid = root
secrets file = /etc/rsyncd.secrets
read only = yes
/etc/rsyncd.secrets
web1:123456
- 呼叫者 (rsync client)
123456
使用
rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets web1@server.domain::serverB /var/www/html
沒有留言:
張貼留言