rsync是一个远程数据同步工具,可以实现数据的增量备份,这点比scp要好,scp只能全量备份。同步可以保持文件原有属性,传输过程加密,数据传输全。
rsync 的传输模式有:
1. 本地shell模式
本地shell模式用于复制本机的目录到另一个目录,和cp一样
2. 远程shell模式
远程shell模式可以把本机的数据复制到远程的机器上,和 scp一样
3. 服务器模式
服务器模式是使用最多的方式,其他3个模式都可以用其他指令替代,远程自动同步也是使用服务器模式
- 安装rsync
[root@yufu tmp]# yum install rsync -y
- rsync 常用的参数说明:
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-v, --verbose 详细模式输出
-p, --perms 保持文件权限
-g, --group 保持文件属组信息
-o, --owner 保持文件属主信息
-r, --recursive 对子目录以递归模式处理。同步目录的时候要加上这个
-R --relative:使用-R与-r选项可以同步整个目录,而不是目录下的文件,单独使用-r选项值同步目录下所有的文件,并不会同步目录
-l, --links 保留软链结,加上这个参数,同步过来的文件会保持之前的软链接属性不变
-H, --hard-links 保留硬链结
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
-z, --compress 对备份的文件在传输时进行压缩处理
--stats 给出某些文件的传输状态
--progress 打印同步的过程
--timeout=TIME 同步过程中,IP超时时间,单位为秒
--delete 删除那些目标目录中有而源目录中没有的多余文件。这个是rsync做增量方式的全备份的最佳选择方案!
--delete-before 接受者在输出之前进行删除操作。即先将目标目录中文件全部删除,再将源目录文件拷贝过去。
这是rsync保持目标目录跟源目录一致的方案!!!
--delete-after 在同步操作之后做比较,删除那些目标目录中有而源目录中没有的多余文件
--delete-excluded 删除目标目录中那些被该选项指定排除的文件
--ignore-errors 即使出现IO错误也进行删除,忽略错误
--exclude 指定同步时需要过滤掉的文件或子目录(即不需要同步过去的),后面直接跟不需要同步的单个文件名或子目录(不需要跟路径)
过滤多个文件或子目录,就使用多个--exclude
--exclude-from 指定同步时需要过滤掉的文件或子目录,后面跟文件(比如/root/exclue.txt)
然后将不需要同步的文件和子目录放到/root/exclue.txt下。
--version 打印版本信息
--port=PORT 指定其他的rsync服务端口
--log-format=formAT 指定日志文件格式
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second
- 基本使用方法(类似cp)
复制/etc/fstab 到/tmp下
[root@localhost tmp]#rsync -a /etc/fstab /tmp/ #-a:保留原文件属性
[root@localhost tmp]#ls
fstab
复制/etc目录到/tmp下
[root@localhost tmp]#rsync -ar /etc /tmp/ #注意/etc后面加斜线与不加斜线的区别,加斜线是复制该目录下的所有文件,不加斜线是复制整个目录
[root@localhost tmp]#ls
etc fstab
远程文件传输 –shell方式
[root@localhost tmp]#rsync -arvz /tmp/fdd root@192.168.214.187:/tmp/ # -z :压缩传输
root@192.168.214.187's password:
sending incremental file list
fdd/
fdd/f1
fdd/f2
fdd/f3
sent 182 bytes received 73 bytes 72.86 bytes/sec
total size is 0 speedup is 0.00
##远程传输会将文件的属组信息改为ssh登录使用的用户属组属主,如上面的fdd目录的属组属主会变成root
开启加密传输,加强传输安全性
[root@localhost tmp]#rsync -arvze ssh /tmp/nginx root@192.168.214.187:/tmp/
root@192.168.214.187's password:
sending incremental file list
nginx/
nginx/nginx.txt
nginx/mysql/
sent 132 bytes received 39 bytes 38.00 bytes/sec
total size is 0 speedup is 0.00
检查远程主机目录
[root@yufu tmp]# tree nginx
nginx
├── mysql
└── nginx.txt
1 directory, 1 file