(1).實驗環境與目標
源主機:youxi1 192.168.5.101
目標主機:youxi2 192.168.5.102
目標:將源主機youxi1的數據備份到youxi2上。
rsync是C/S模式,默認端口873
(2).rsync命令常用格式與常用選項、
常用格式:
rsync [OPTION] SRC [USER@]HOST:DEST //源主機執行的推送數據命令,需要目的主機執行守護進程
rsync [OPTION] SRC [USER@]HOST::DEST //與上一條命令類似,但使用的是非系統用戶,並且需要配置文件
rsync [OPTION] [USER@]HOST:SRC [DEST] //目的主機執行的拉取數據命令,需要源主機執行守護進程
rsync [OPTION] [USER@]HOST::SRC [DEST] //與上一條命令類似,但使用的是非系統用戶,並且需要配置文件
常用選項:
-a,--archive 存檔模式,相當於-rlptgoD -z,--compress 傳輸過程中壓縮數據 -v,--verbose 復雜輸出信息 --delete 刪除目標中存在,而源中不存在的文件 --password-file=FILE 從FILE中讀取密碼
注意:-z選項適合雜碎文件的傳輸,如果是單個大文件傳輸並不適合使用此選項
(3).實驗
1)檢查是否安裝了rsync和xinetd
[root@youxi2 ~]# yum list installed | grep xinetd xinetd.x86_64 2:2.3.15-13.el7 @base [root@youxi2 ~]# yum list installed | grep rsync rsync.x86_64 3.1.2-6.el7_6.1 @updates
如果以上命令沒有輸出結果,那么請使用yum -y install xinetd rsync安裝兩個程序,並systemctl enable [服務名]設置為開機自啟。
2)兩台主機上創建同名用戶,密碼可以不一樣
在主機youxi1上添加rsync1用戶,密碼為101101
[root@youxi1 ~]# useradd rsync1 [root@youxi1 ~]# echo "101101" | passwd --stdin rsync1 更改用戶 rsync1 的密碼 。 passwd:所有的身份驗證令牌已經成功更新。
在主機youxi2上添加rsync1用戶,密碼為102102
[root@youxi2 ~]# useradd rsync1 [root@youxi2 ~]# echo "rsync1:102102" | chpasswd
3)在主機youxi1上創建源文件夾,並給rsync1添加權限
[root@youxi1 ~]# mkdir -p /www/html [root@youxi1 ~]# setfacl -m u:rsync1:rwx /www/html //目錄設置ACL權限,如果存在文件或目錄,可以使用-R選項遍歷賦權 [root@youxi1 ~]# setfacl -m d:u:rsync1:rwx /www/html //目錄設置默認ACL權限,新建的文件或目錄將繼承默認ACL權限 [root@youxi1 ~]# getfacl /www/html getfacl: Removing leading '/' from absolute path names # file: www/html # owner: root # group: root user::rwx user:rsync1:rwx group::r-x mask::rwx other::r-x default:user::rwx default:user:rsync1:rwx default:group::r-x default:mask::rwx default:other::r-x
拷貝一些數據作為測試
[root@youxi1 ~]# cp -r /var/* /www/html/ [root@youxi1 ~]# ls /www/html/ adm crash empty gopher lib lock mail opt run tmp cache db games kerberos local log nis preserve spool yp
4)在主機youxi2上創建目的文件夾
[root@youxi2 ~]# mkdir -p /backup/www/html [root@youxi2 ~]# chown rsync1:rsync1 /backup/www/html/ [root@youxi2 ~]# ls -ld /backup/www/html/ drwxr-xr-x 2 rsync1 rsync1 6 5月 15 11:16 /backup/www/html/
5)從主機youxi1上將數據推送到主機youxi2上
推送數據,命令會在源主機youxi1上執行,那么相應的需要目的主機youxi2監聽。
目的主機youxi2執行監聽(守護進程)
[root@youxi2 ~]# rsync --daemon [root@youxi2 ~]# netstat -antup | grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1824/rsync tcp6 0 0 :::873 :::* LISTEN 1824/rsync
源主機youxi1執行推送命令
[root@youxi1 ~]# rsync -avz /www/html/ rsync1@192.168.5.102:/backup/www/html/ rsync1@192.168.5.102's password:
最后到目的主機youxi2上查看是否成功
[root@youxi2 ~]# ls /backup/www/html/ adm crash empty gopher lib lock mail opt run tmp cache db games kerberos local log nis preserve spool yp
6)當然也可以在主機youxi2上拉取youxi1上的數據
拉取數據,命令會在目的主機youxi2上執行,那么相應的需要源主機youxi1監聽
源主機youxi1執行監聽(守護進程)
[root@youxi1 ~]# rsync --daemon [root@youxi1 ~]# netstat -antup | grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1947/rsync tcp6 0 0 :::873 :::* LISTEN 1947/rsync
目的主機youxi2執行拉取命令
[root@youxi2 ~]# rsync -avz rsync1@192.168.5.101:/www/html/ /backup/www/html/ rsync1@192.168.5.101's password:
最后查看目的主機youxi2上是否成功
[root@youxi2 ~]# ls /backup/www/html/ adm crash empty gopher lib lock mail opt run tmp cache db games kerberos local log nis preserve spool yp
(4).使用非系統用戶備份數據
1)配置文件說明
rsync的配置文件是/etc/rsyncd.conf,在執行rsync守護進程時調用。配置文件內分為全局參數和模塊參數。
常見全局參數:
port 指定端口號,默認873。 uid 指定傳輸文件時守護進程應該具有的uid,默認為nobody。配合gid可以確定訪問權限。 gid 指定傳輸文件時守護進程應該具有的gid,默認為nobody。 max connections 指定最大連接數,默認為0,也就是沒有限制。 lock file 指定支持max connections參數的鎖文件,默認為/var/run/rsyncd.lock。 motd file 指定提示文件,連接時顯示文件內容給連接者,默認沒有。 log file 指定rsync的日志文件,而不將日志發送給syslog。 pid file 指定rsync的pid文件,一般指定為/var/run/rsyncd.pid,存放進程ID的文件位置。 hosts allow 指定允許同步的客戶機地址,可以是IP地址也可以是網段
常見模塊參數:
comment 對模塊的描述,默認沒有。 path 指定提供給模塊的目錄,必須指定。 read only 如果值是yes表示只允許下載,no既可以加載也可以上傳 exclude 指定多個由空格隔開的文件或目錄,不上傳或下載(即不可訪問),相當於命令中的--exclude=PATTERN或-f,--filter=RULE。 exclude from從指定文件中讀取exclude文件或目錄列表,換行符分隔。 include 指定不排除符合要求的文件或目錄,相當於命令中的--include=PATTERN。 include from從指定文件讀取include文件或目錄列表,換行符分隔。 auth users 指定允許連接該模塊的用戶名列表,用空格或逗號分隔,與系統用戶無關。用戶名和密碼以明文方式存在在secrets file參數的文件中。 secrets file 指定包含“username:password”對的文件,換行符分隔,只有auth users參數被指定,才生效。 hosts allow 指定允許同步的客戶機地址,可以是IP地址也可以是網段 list 設定當請求使用模塊列表時,該模塊是否被列出。false隱藏,默認值為true顯示 timeout 超時時間,默認為0,沒有超時時間。理想數值600。
2)使用非系統用戶從源主機youxi1上將數據推送到目標主機youxi2上
在目標主機youxi2上配置rsync.conf
[root@youxi2 ~]# cat /etc/rsyncd.conf uid = root //運行進程的用戶 gid = root //運行進程的組 address = 192.168.5.102 //監聽地址 port = 873 //監聽端口號 hosts allow = 192.168.5.101/24 //允許同步的IP地址 use chroot = yes //是否鎖定家目錄,rsync被黑后,黑客無法在rsync運行的家目錄之外創建文件。 max connections = 5 //最大連接數 pid file = /var/run/rsyncd.pid //進程ID存放文件,自動生成 lock file = /var/run/rsync.lock //max connections參數的鎖文件 log file = /var/log/rsyncd.log //日志文件位置 motd file = /etc/rsyncd.motd //提示信息存放文件位置 [backupwwwhtml] //模塊名 path = /backup/www/html //模塊運行路徑 comment = backup /www/html/ //描述 read only = false //上傳下載權限 list = yes //允許查看模塊信息 auth users = rsync2 //非系統用戶名 secrets file = /etc/rsync.passwd //存放密碼文件
在目標主機youxi2上創建密碼文件,並限制權限
[root@youxi2 ~]# cat /etc/rsync.passwd rsync2:102102 [root@youxi2 ~]# chmod 600 /etc/rsync.passwd
啟動rsync的守護進程,並指定使用/etc/rsyncd.conf配置文件
[root@youxi2 ~]# rsync --daemon --config=/etc/rsyncd.conf [root@youxi2 ~]# netstat -antup | grep rsync tcp 0 0 192.168.5.102:873 0.0.0.0:* LISTEN 1384/rsync
在目標主機youxi2上添加端口號
[root@youxi2 sysconfig]# firewall-cmd --permanent --zone=public --add-port=873/tcp success [root@youxi2 sysconfig]# firewall-cmd reload success
最后在源主機youxi1上執行推送命令
[root@youxi1 ~]# rsync -avz /www/html/ rsync2@192.168.5.102::backupwwwhtml Password:
3)使用非系統用戶在目標主機youxi2上拉取源主機youxi1的數據
在源主機youxi1上配置rsync.conf
[root@youxi1 ~]# cat /etc/rsyncd.conf uid = root gid = root address = 192.168.5.101 port = 873 hosts allow = 192.168.5.102/24 use chroot = yes max connections = 5 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log motd file = /etc/rsyncd.motd [backup] path = /www/html comment = backup /www/html read only = no list = yes auth users = rsync3 secrets file = /etc/rsync.passwd
在源主機youxi1上創建密碼文件,並限制權限
[root@youxi1 ~]# cat /etc/rsync.passwd rsync3:101101 [root@youxi1 ~]# chmod 600 /etc/rsync.passwd
啟動rsync的守護進程,並讀取配置文件/etc/rsyncd.conf
[root@youxi1 ~]# rsync --daemon --config=/etc/rsyncd.conf [root@youxi1 ~]# netstat -antup | grep rsync tcp 0 0 192.168.5.101:873 0.0.0.0:* LISTEN 2188/rsync
在源主機youxi1上添加端口
[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port=873/tcp success [root@youxi1 ~]# firewall-cmd --reload success
在目標主機youxi2上執行拉取命令
[root@youxi2 ~]# rsync -avz rsync3@192.168.5.101::backup /backup/www/html/ Password:
注意:如果不想每次備份數據都輸入一次命令,或需要進行定時計划任務,可以使用--password-file=FILE選項,將密碼保存到文件中使用選項調用。