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_configGSSAPIAuthentication noUseDNS no
3.服务器端、客户端的操作和配置
服务器端
vim /etc/rsyncd.conf# uid是运行进程的用户,客户端通过验证后使用rsync用户访问共享目录,# 默认是nobody,用默认也行,系统安装完之后,是存在这个用户的uid = rsyncgid = rsyncuse chroot = nomax connections = 200timeout = 300pid file = /var/run/rsyncd.pidlock file = /var/run/rsyncd.locklog file = /var/log/rsyncd.log[backup]path = /backupignore errorsread only = falselist = falsehosts 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.passwordrsync_backup:oldboyuseradd -M -s /sbin/nologin rsyncmkdir /backupls -ld /backupdrwxr-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 /backupchmod 600 /etc/rsync.password # 必须修改权限rsync --daemonecho "/usr/bin/rsync --daemon" >> /etc/rc.local
客户端
客户端密码文件中只有密码
vi /etc/rsync.passwordoldboychmod 600 /etc/rsync.password如果没有缩小权限,那么还是会让你输入密码:password file must not be other-accessiblecontinuing without password filePassword:
客户端的拉取(pull)和推送(push)
推送:rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwordrsync -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.passwordrsync -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.confuid = rsyncgid = rsyncuse chroot = nomax connections = 200timeout = 300pid file = /var/run/rsyncd.pidlock file = /var/run/rsyncd.locklog file = /var/log/rsyncd.logignore errorsread only = falselist = falsehosts allow = 172.16.1.0/24# hosts deny = 0.0.0.0/32auth users = rsync_backupsecrets 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.passwordrsync -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.passwordtouch {01..10}.logrsync -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