第1章 rsync 軟體介紹 1.1 什麼是rsync rsync 是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具。 http://www.samba.org/ftp/rsync/rsync.html 1.1.1 全量及增量 全量:將全部數據,進行傳輸覆蓋 增量: ...
第1章 rsync 軟體介紹
1.1 什麼是rsync
rsync 是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具。
http://www.samba.org/ftp/rsync/rsync.html
1.1.1 全量及增量
全量:將全部數據,進行傳輸覆蓋
增量:只傳輸差異部分的數據
1.2 實現增量複製的原理
Rsync通過其獨特的“quick check”演算法,實現增量傳輸數據
[root@backup ~]#man rsync
Rsync finds files that need to be transferred using a “quick check” algorithm (by default) that looks for files that have changed in size or in last-modified time. Any changes in the other preserved attributes (as requested by options) are made on the destination file directly when the quick check indicates that the file’s data does not need to be updated.
在同步備份數據時,預設情況下,Rsync通過其獨特的“quick check”演算法,它僅同步大小或者最後修改時間發生變化的文件或目錄,當然也可根據許可權,屬主等屬性的變化同步,但需要指定相應的參數,甚至可以實現只同步一個文件里有變化的內容部分,所以,可以實現快速的同步備份數據。
centos 5 rsync 2.x 先比對再同步,速度較慢
centos 6 rsync 3.x 一邊比對,一邊對差異部分進行同步
1.2.1 軟體版本
[root@backup ~]# rsync --version
rsync version 3.0.6 protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes
rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.
1.3 rsync 軟體功能介紹
類似於 cp 命令 -- 實現本地備份傳輸數據
類似於scp 命令 -- 遠程備份傳輸數據
類似於 rm 命令 -- 實現無差異同步備份
類似於 ls 命令 -- 本地文件信息查看
rsync 命令屬於1 v 4 的命令
1.3.1 rsync == cp
[root@backup ~]# cp -a /etc/hosts /tmp/
[root@backup ~]# ls /tmp/
hosts
[root@backup ~]# \rm /tmp/hosts
[root@backup ~]# rsync /etc/hosts /tmp/
[root@backup ~]# ls /tmp/hosts
/tmp/hosts
1.3.2 rsync == scp
#使用scp實現
#檢查對端伺服器目標位置上是否有該文件
[root@nfs01 ~]# ls /tmp/hosts
ls: cannot access /tmp/hosts: No such file or directory
#從本地拷貝到遠端伺服器上
[root@backup ~]# ls /tmp/hosts
/tmp/hosts
[root@backup ~]# scp -rp /etc/hosts 10.0.0.31:/tmp/
The authenticity of host '10.0.0.31 (10.0.0.31)' can't be established.
RSA key fingerprint is d3:41:bb:0d:43:88:da:a3:2c:e8:36:91:11:c9:e4:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.31' (RSA) to the list of known hosts.
[email protected]'s password:
hosts 100% 357 0.4KB/s 00:00
#檢查遠端伺服器上的結果
[root@nfs01 ~]# ls /tmp/hosts
/tmp/hosts
#使用rsync 實現
[root@backup ~]# rsync -rp /etc/hosts 10.0.0.31:/tmp/
[email protected]'s password:
[root@backup ~]#
[root@nfs01 ~]# ls /tmp/hosts
/tmp/hosts
1.3.3 rsync == rm
1.3.3.1 環境準備
創建出來一次命令 進行操作
[root@backup tmp]# mkdir /znix
[root@backup znix]# cp /tmp/* .
[root@backup znix]# ll
total 4
-rw-r--r-- 1 root root 357 Oct 11 15:21 hosts
#rm命令操作
[root@backup znix]# rm -rf /znix/hosts
[root@backup znix]# ll /znix/hosts
ls: cannot access /znix/hosts: No such file or directory
查看這文件
[root@backup ~]# ll
total 4
-rw-r--r-- 1 root root 357 Oct 11 15:21 hosts
創建一個空目錄,使用空目錄進行無差異同步
[root@backup ~]# mkdir /null
[root@backup ~]# rsync --delete /null/ /znix/
rsync: --delete does not work without -r or -d.
rsync error: syntax or usage error (code 1) at main.c(1422) [client=3.0.6]
[root@backup ~]# rsync -a --delete /null/ /znix/
[root@backup ~]# ll /znix/
total 0
1.3.4 rsync == ls -l
使用rsync 可以實現與 ls 類似的功能
[root@backup ~]# ls -l install.log
-rw-r--r--. 1 root root 21736 Sep 25 08:38 install.log
[root@backup ~]# rsync install.log
-rw-r--r-- 21736 2017/09/25 08:38:28 install.log
1.4 Rsync的特性總結(7個特性信息說明)
01. 支持拷貝普通文件與特殊文件如鏈接文件,設備等。
02. 可以有排除指定文件或目錄同步的功能,相當於打包命令tar的排除功能。
#tar zcvf backup_1.tar.gz /opt/data -exclude=oldboy
說明:在打包/opt/data時就排除了oldboy命名的目錄和文件。
03. 可以做到保持原文件或目錄的許可權、時間、軟硬鏈接、屬主、組等所有屬性均不改變-p。
04. 可實現增量同步,既只同步發生變化的數據,因此數據傳輸效率很高(tar -N)。
# 將備份/home 目錄自 2008-01-29 以來修改過的文件
# tar -N 2008-01-29 -zcvf /backups/inc-backup_$(date +%F).tar.gz /home
# 將備份 /home 目錄昨天以來修改過的文件
# tar -N $(date -d yesterday "+%F") -zcvf /backups/inc-backup_$(date +%F).tar.gz /home
# 添加文件到已經打包的文件
# tar -rf all.tar *.gif
說明:這條命令是將所有.gif的文件增加到all.tar的包裡面去。-r是表示增加文件的意思。
05. 可以使用rcp,rsh,ssh等方式來配合進行隧道加密傳輸文件(rsync本身不對數據加密)
06. 可以通過socket(進程方式)傳輸文件和數據(服務端和客戶端)*****。重點掌握
07. 支持匿名的或認證(無需系統用戶)的進程模式傳輸,可實現方便安全的進行數據備份及鏡像。
1.5 Rsync的企業工作場景說明
01. 兩台伺服器之間數據同步(定時任務cron+rsync)
同步網站內部人員數據信息(定時任務最小周期為1分鐘)
02. 兩台伺服器之間數據同步(實時任務inotify/sersync/lrsyncd+rsync)
同步網站用戶人員數據信息
第2章 rsync使用方式
2.1 rsync軟體工作方式
SYNOPSIS
本地數據同步方式
Local: rsync [OPTION...] SRC... [DEST]
遠程數據同步方式
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
守護進程方式同步數據
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
2.1.1 本地數據同步方式(類似於cp)
Local: rsync [OPTION...] SRC... [DEST]
參數 | 含義 |
rsync | 數據同步命令 |
[OPTION...] | rsync命令參數信息 |
SRC | 要同不得數據信息(文件或目錄) |
[DEST] | 將數據傳輸到什麼位置 |
2.1.1.1 實例演示命令:
[root@backup ~]# rsync /etc/hosts /tmp/
[root@backup ~]# ls /tmp/hosts
/tmp/hosts
2.1.2 遠程數據同步方式(類似scp)---又稱為隧道傳輸
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
說明:需要進行交互傳輸數據。如果想實現免交互傳輸數據,需要藉助ssh+key方式實現
pull: 拉: | |
[USER@] : | 以什麼用戶身份傳輸數據信息 |
HOST: | 遠程主機信息(IP地址信息 主機名稱信息) |
SRC: | 遠端要恏過來的數據信息 |
[dest] | 恏到本地什麼位置 |
push:推: | |
SRC: | 本地要懟過去的數據信息 |
DEST | 懟到遠端什麼位置 |
2.1.3 【實踐操作】pull 拉
從遠端拉文件到當前目錄
[root@nfs01 ~]# touch /tmp/1.txt
[root@backup ~]# rsync nfs01:/tmp/1.txt .
root@nfs01's password:
[root@backup ~]# ll
total 44
-rw-r--r-- 1 root root 0 Oct 11 16:16 1.txt
2.1.4 【實踐操作】push 推 (目錄)
將本地的hosts文件推到遠端伺服器上
[root@backup tmp]# ll
total 4
-rw-r--r-- 1 root root 357 Oct 11 15:12 hosts
使用push的格式 推整個目錄(包括目錄)
[root@backup tmp]# rsync -r /tmp nfs01:/tmp/
root@nfs01's password:
[root@nfs01 tmp]# ll
total 4
drwxr-xr-x 3 root root 4096 Oct 11 16:20 tmp
推整個目錄下的文件(不包括目錄本身)
[root@backup tmp]# rsync -r /tmp/ nfs01:/tmp/
root@nfs01's password:
[root@nfs01 tmp]# ll
total 8
-rw-r--r-- 1 root root 357 Oct 11 16:21 hosts
drwxr-xr-x 3 root root 4096 Oct 11 16:20 tmp
說明:
/tmp --表示將tmp目錄本身及目錄下的內容進行傳輸
/tmp/ --表示只傳輸tmp目錄下麵的內容信息
2.2 守護進程方式同步數據
系統版本
[root@localhost ~]# uname -a
Linux 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
2.2.1 配置rsync守護進程方式(需要有服務端與客戶端)
規劃:
1、backup伺服器作為rsync服務端
2、以rysnc客戶端作為參照物,將數據推到rsync伺服器上
2.2.2 配置rsync服務端(將服務端配置到 backup 伺服器上)
第一個裡程碑: 軟體是否存在
[root@backup ~]# rpm -qa |grep rsync
rsync-3.0.6-12.el6.x86_64
第二個裡程碑: 進行軟體服務配置
[root@backup ~]# vim /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = no
max connections = 200