rsync是一款Linux上的文件远程同步工具。
rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。
安装
一般的Linux系统都自带了这个工具,如果没有的话,可以用下面的命令安装1
2
3$ wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz
$ tar -xvzf rsync-3.1.2.tar.gz && cd rsync-3.1.2
$ ./configure && make && sudo make install
服务器端
假设我们有一个目录/home/ldongxu/backup/mysql需要同步,创建配置文件1
2$ sudo touch /etc/rsyncd.conf
$ sudo vi /etc/rsyncd.conf
加入下面的内容1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31# SYNC守护进程的用户
uid = root
# 运行RSYNC守护进程的组
gid = root
# 不使用chroot
use chroot = no
# 最大连接数是4
max connections = 4
# pid文件存放位置
pid file = /var/run/rsyncd.pid
# 锁文件存放位置
lock file = /var/run/rsync.lock
# 日志文件存放位置
log file = /var/log/rsyncd.log
[mysql]
# 要同步的目录
path = /home/ldongxu/backup/mysql
# 忽略无关的IO错误
ignore errors
# 只读,不能上传
read only = true
# 禁止查看文件列表
list = false
# 允许访问服务的ip
# hosts allow = 192.168.1.200
# 禁止访问服务的ip
# hosts deny = 0.0.0.0/32
# 认证的用户名,系统必须存在的用户,但是密码需要在secrets file 配置,不是系统的密码。
auth users = ldongxu
# 认证用户密码文件,配置auth users的密码
secrets file = /etc/backserver.pas
上面配置文件中的mysql可以自定义,客户端同步的时候要用到。上面的认证用户,必须是系统存在的用户。
接下来创建密码文件/etc/backserver.pas
1
2
3$ sudo touch /etc/backserver.pas
$ sudo chown root:root /etc/backserver.pas
$ sudo chmod 600 /etc/backserver.pas
然后在里面加入ldongxu:ldongxu
每个用户一行,冒号前面是用户名,后面是密码,然后启动服务1
$ sudo rsync --daemon --config=/etc/rsyncd.conf
这样服务端就算搭建好了,可以把命令加入到开机启动1
$ echo 'rsync --daemon --config=/etc/rsyncd.conf' >> /etc/rc.d/rc.local
客户端
假设我们要把刚刚服务器端的/home/ldongxu/backup/mysql
同步下来。
先创建密码文件,用于同步时的验证1
2$ touch ~/rsyncd.secrets
$ chmod 600 ~/rsyncd.secrets
这个文件只要放密码就可以了,在这个例子中,则是放入1
ldongxu
然后运行1
$ rsync -avz --delete --password-file=/xxx/rsyncd.secrets clinyong@your_ip::mysql destination
把server_ip换成自己服务器的ip地址,mysql就是在服务器端的配置文件填写的字段,destination换成本地路径,这样子就能把文件同步下来了。
把命令加入到crontab,让其每天同步一次,运行crontab -e,在最后一行加入1
00 00 * * * rsync -avz --delete --password-file=/etc/rsyncd.secrets ldongxu@server_ip::mysql destination
语法
1 | rsync [OPTION]... SRC DEST |
对应于以上六种命令格式,rsync有六种不同的工作模式:
- 拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。如:rsync -a /data /backup
- 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。如:rsync -avz *.c foo:src
- 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。如:rsync -avz foo:src/bar /data
- 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。如:rsync -av root@192.168.78.192::www /databack
- 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。如:rsync -av /databack root@192.168.78.192::www
- 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://192.168.78.192/www
选项
1 | -v, --verbose 详细模式输出。 |