rsync 文件备份
# rsync # 实现文件的备份。 # 备份位置可以是当前主机,也可以是远程主机。 # rsync实现了完全备份和增量备份 # 可以做到:1.将本地主机的文件复制到另一个位置(本地、远程)。 # 2.将本地主机的文件推送到远程主机,页可以从远程主机拉取文件到本地。 # 使用模式: # 1.shell模式:本地赋值功能 # 2.远程shell模式:可以利用ssj来实现数据的加密传输到远程主机 # 3.服务器模式:rsync工作在守护进程模式下 # 4.列表模式:ls # # 注意实现: # 1.保证各个主机的时间一致(ntp) # 2.实现文件的实时同步(rsync+inotify、rsync+sersync) # inotify/sersync:将发生了改变的文件找出来 # 命令使用格式 # 一、本地模式:Local: rsync [OPTION...] SRC... [DEST] # -p:赋值文件过程中,保持文件的属性不变 # -v:显示复制过程中的信息 # -a:使用归档模式(不然就会跳过目录) # -z:在传输过程中,以压缩方式进行传输 # -e:"shh [-p22]"指定我们所使用的传输通道 # -r:递归复制 # --delete:让客户端和服务器端的文件完全一致 # --exclude:在进行文件上传的时候,排除指定的文件 # 二、远程shell模式: # Pull(拉取): rsync [OPTION...] [USER@]HOST:SRC... [DEST] # Push(推送): rsync [OPTION...] SRC... [USER@]HOST:DEST # -e指定传输协议和端口,"/home/dir1"为本地目录,“root”远程的用户“10.0.0.5”为远程机子ip,“/tmp/”推送到哪里去 rsync -avz -e "ssh -p22" /home/dir1 root@10.0.0.5:/tmp/ rsync -avz -e "ssh -p22" root@10.0.0.5:/tmp/ /home/dir1 # 注意事项: # 1.在传递文件的时候,会首先对比源和目的下的文件md5码,有更变才会进行传递 # 2.工作中通常都是rsync+ssh秘钥认证方式,目的是为了免密登录 # 三、服务器模式(后台运行) # 准备:关闭selinux,关闭防火墙,配置时间同步 # rsync服务器模式是以模块的形式供其他机子同步和上传的,每个模块对应的是本地的一个目录, # 所以我们需要通过rsyncd.conf文件来配置各个模块的参数,默认rsyncd.conf文件是不存在的,需要自己创建 touch /etc/rsyncd.conf # 配置参数帮助文档 man rsyncd.conf # rsyncd.conf 的构成 全局参数 ... [模块1] 模块参数 ... [模块2] 模块参数 ... # 参数分为全局参数和模块参数。模块参数可以写在全局参数(对所有模块生效)。 # 全局参数 pid file:指定pid文件路劲 lock file:指定rsync进程锁在文件的路劲和名称 log file:rsync日志路劲和名称 port:指定端口 # 模块参数 path:指定备份目录的路劲 use chroot:是否将用户锁定在home目录 max connections:同时连接用户的最大数量 read only: 只读。也就是只能拉取不能上传 write only: list: 设置是否可以显示全部模块列表 uid: 指定rsync进程以什么用户身份在后台运行(必须是系统,也就是必须保存在/etc/passwd) gid: auth user:指定访问模块需要使用的用户名,这里是虚拟用户的(保存在secrets file参数路劲) secrets file:虚拟用户名和密码的配置文件 hosts allow: 白名单(客户端的ip地址),如果没有设置白名单和黑名单就代表所用客户端都可以访问 hosts deny: 黑名单 timeout: 指定空闲超时时间。 exclude:指定排除哪些文件不进行上传,多个文件空格隔开,支持通配符(q* 12.txt) 例子: uid=rsync gid=rsync use chroot=no port=873 max connections=2 timeout=100 pid file=/rsync/pid/rsync.pid lock file=/rsync/lock/rsync.lock log file=/rsync/log/rsync.log [web1] path=/rsync/web1 read only=false hosts allow=10.0.0.0/8 auth users=vuser1 secrets file=/rsync/rsync.passwd list=false [web2] path=/rsync/web2 read only=false hosts allow=10.0.0.0/8 auth users=vuser2 secrets file=/rsync/rsync.passwd list=false # 创建目录 mkdir -pv /rsync/web{1,2} # 创建rsync运行的系统用户 groupadd -r rsync useradd -r -s /sbin/nologin -g rsync rsync # 启动服务。默认配置文件加载的是/etc/rsyncd.conf,如果需要加载其他:--config=/path/rsyncd.conf rsync --deamon # 重启(修改配置文件后需要重启) killall rsync ss -tnl | grep 873 rsync --deamon ss -tnl | grep 873 # 检查rsync的端口(默认873) ss -ntl | grep 873 # 创建虚拟用户的密码,该文件的权限一定要是600 vim /rsync/rsync.passwd # 内容如下(一个用户一行): vuser1:123 vuser2:123 # 修改文件权限 sudo chmod 600 /rsync/rsync.passwd # 修改模块目录所属 sudo chown rsync.rsync /rsync/web1 sudo chown rsync.rsync /rsync/web2 # 客户端访问命令 # Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] # rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] # Push: rsync [OPTION...] SRC... [USER@]HOST::DEST # rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST # 上传 rsync -avz /home/ vuser1@10.0.0.41:873:web1 # 拉取 rsync -avz vuser1@10.0.0.41:873:web1 /home/ # 密码:/etc/abc.passwd内容处了密码不能有其他内容,权限必须是600 rsync -avz /home/ vuser1@10.0.0.41:873:web1 --password-file=/etc/abc.passwd # 补充 # --delete 让客户端和服务器端的文件完全一致(注意:如果你是部分推送的是部分文件的话,那么服务端会将其他文件删除) rsync -avz /home/ --delete vuser1@10.0.0.41:873:web1 --password-file=/etc/abc.passwd # --exclude 在进行文件上传的时候,排除指定的文件 rsync -avz /home/ --exclude=22.txt vuser1@10.0.0.41:873:web1 --password-file=/etc/abc.passwd rsync -avz /home/ --exclude=*.txt vuser1@10.0.0.41:873:web1 --password-file=/etc/abc.passwd rsync -avz /home/ --exclude={22.txt,23.txt} vuser1@10.0.0.41:873:web1 --password-file=/etc/abc.passwd
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?