rsync使用详解
2020-08-19 15:37:38
392
1.rsync本地模式及参数总结
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 本地拷贝,相当于 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实现不同主机拷贝数据
1 2 3 4 5 6 7 8 9 | 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.服务器端、客户端的操作和配置
服务器端
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 32 33 34 35 36 37 38 39 40 | 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 |
客户端
客户端密码文件中只有密码
1 2 3 4 5 6 7 | vi /etc/rsync .password oldboy chmod 600 /etc/rsync .password 如果没有缩小权限,那么还是会让你输入密码: password file must not be other-accessible continuing without password file Password: |
客户端的拉取(pull)和推送(push)
1 2 3 4 5 6 7 | 推送: 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.多模块配置
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 | 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.排除及无差异同步
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 排除单个文件 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 加密传输; 缺点:大量小文件同步时间可能较长,进程可能会停止,较大文件可能会中断. |