rsync使用详解
1.rsync本地模式及参数总结
本地拷贝,相当于cp -e,使用通道协议; -v,--verbose详细模式输出; -z,--compress传输时进行压缩以提高传输效率; -a,--archive归档模式,以递归方式传输文件,并保持所有文件属性,相当于-rtopgD -r,--recursive对子目录以递归模式; -o,--owner保持文件属主; -p,--perms保持文件权限; -g,--group包吃文件属组信息; --exclude=PATTERN,指定排除不需要传输的文件模式; --exclude-from=file --bwlimit=RATE --delete,让目标目录和源目录数据一致. rsync -avz /etc/hosts* /mnt/ # /tmp1/是一个空目录,下面命令会导致清空/mnt目录 rsync -avz --delete /tmp1/ /mnt/ # 下面两条命令的执行结果是不一样的,带斜线是只拷贝目录中的文件, # 不带斜线是将目录和文件一起拷贝到目标目录 rsync -avz /tmp1/ /mnt/ rsync -avz /tmp1 /mnt/
2.rsync实现不同主机拷贝数据
2.rsync实现不同主机拷贝数据 rsync -az /etc/hosts* -e 'ssh -p 22' root@10.0.0.31:/mnt # 会出现解析慢的情况 Address 10.0.0.31 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT! # 修改目标主机的ssh配置文件 vi /etc/ssh/sshd_config GSSAPIAuthentication no UseDNS no
3.服务器端、客户端的操作和配置
服务器端
vim /etc/rsyncd.conf # uid是运行进程的用户,客户端通过验证后使用rsync用户访问共享目录, # 默认是nobody,用默认也行,系统安装完之后,是存在这个用户的 uid = rsync gid = rsync use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log [backup] path = /backup ignore errors read only = false list = false hosts allow = 172.16.1.0/24 # hosts deny = 0.0.0.0/32 二选一 auth users = rsync_backup # 独立于系统账号之外的虚拟用户 secrets file = /etc/rsync.password # auth users在man手册中有说明: This usernames do not need to exists on the local system. # 该文件中的用户名作用:验证客户端是否有资格登录服务器端 vi /etc/rsync.password rsync_backup:oldboy useradd -M -s /sbin/nologin rsync mkdir /backup ls -ld /backup drwxr-xr-x 2 root root 4096 Nov 26 00:38 /backup # 如果这个目录的权限不是rsync而是root, # 那么客户端通过验证之后以rsync用户访问该目录就会没有权限 chown rsync.rsync /backup/ drwxr-xr-x 2 rsync rsync 4096 Nov 26 00:38 /backup chmod 600 /etc/rsync.password # 必须修改权限 rsync --daemon echo "/usr/bin/rsync --daemon" >> /etc/rc.local
客户端
客户端密码文件中只有密码
vi /etc/rsync.password oldboy chmod 600 /etc/rsync.password 如果没有缩小权限,那么还是会让你输入密码: password file must not be other-accessible continuing without password file Password:
客户端的拉取(pull)和推送(push)
推送: rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup/ --password-file=/etc/rsync.password 拉取: rsync -avz rsync_backup@172.16.1.41::backup /backup/ --password-file=/etc/rsync.password rsync -avz rsync://rsync_backup@172.16.1.41/backup/ /backup/ --password-file=/etc/rsync.password 提示:上述的backup是模块名,不是路径
4.多模块配置
cp /etc/rsyncd.conf{,.bak} mkdir -p /data/{nginx,mysql} chown -R rsync.rsync /data/ vi /etc/rsyncd.conf uid = rsync gid = rsync use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log ignore errors read only = false list = false hosts allow = 172.16.1.0/24 # hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.password [web] path = /data/nginx [mysql] path = /data/mysql 客户端命令: rsync -avz /backup/ rsync_backup@172.16.1.41::web --password-file=/etc/rsync.password rsync -avz /backup/ rsync_backup@172.16.1.41::mysql --password-file=/etc/rsync.password
5.排除及无差异同步
# 排除单个文件 rsync -avz --exclude=stu01 /backup/ rsync_backup@172.16.1.41::mysql --password-file=/etc/rsync.password # 排除多个文件,一般用来排除日志 rsync -avz --exclude={stu01,stu02} /backup/ rsync_backup@172.16.1.41::mysql --password-file=/etc/rsync.password touch {01..10}.log rsync -avz --exclude=*.log /backup/ rsync_backup@172.16.1.41::mysql --password-file=/etc/rsync.password # 如果文件名连续的话可以这样 rsync -avz --exclude={01..10}.log /backup/ rsync_backup@172.16.1.41::web --password-file=/etc/rsync.password # 无差异同步,即:使用参数--delete # 让服务器端和客户端保持一模一样,但实际情况是服务器端保存着远多于客户端的数据,所以此参数慎用. 优点:增量备份,利用通道模式可以ssh加密传输; 缺点:大量小文件同步时间可能较长,进程可能会停止,较大文件可能会中断.
参考博客-rsync搭建:https://www.cnblogs.com/wenxinphp/p/5800446.html