天天看点

linux数据同步工具rsync基本应用rsync

rsync

  • rsync 为 linux系统下的最常用的数据备份工具,
  • rsync可以实现远程同步,支持本地复制,或者与其他SSH、rsync主机同步数据,
  • 支持增量备份,配合任务计划,rsync能实现定时或间隔同步,
  • 配合inotify或sersync,可以实现触发式的实时数据同步。

rsync -av /root/v2.0.tar.gz /home/sun ## 将本地root下的包传到本地sun加目录里

rsync -ac /root/sun/ [email protected]:/home/sun/ ## 将本地root下sun目录中所有内容传到192服务器sun用户家目录下

rsync /etc/networks [email protected]::backup ## 将本地etc下的networks目录整个传到远端192rsync共享backup虚拟目录中

rsync 主要内容

  • 官方网站: http://rsync.samba.org/
  • 软件包:rsync,rsync-daemon(CentOS 8)
  • 服务文件:/usr/lib/systemd/system/rsyncd.service
  • 配置文件:/etc/rsyncd.conf
  • 端口:873/tcp

rsync三种工作方式:

  1. 本地文件系统上实现同步。命令行语法格式为"Local"段的格式。

    rsync [OPTION...] SRC... [DEST]

  • 类似于cp,
  • 默认前边写源地址,后编写目的地址
  • SRC为想要邮寄的包裹,DEST为想要将包放寄到哪去
  • av的效果包罗了-rtopgD和v,递归并保留源格式
[20:35:25 [email protected][ ~]#rsync -av /root/v2.0.tar.gz /home/sun
sending incremental file list
v2.0.tar.gz

sent 205,781 bytes  received 35 bytes  411,632.00 bytes/sec
total size is 205,640  speedup is 1.00
[20:35:32 [email protected][ ~]#mkdir /root/sun;touch /root/sun/sun.log
[20:36:44 [email protected][ ~]#rsync -av /root/sun/ /home/sun/
sending incremental file list
./
sun.log

sent 106 bytes  received 38 bytes  288.00 bytes/sec
total size is 0  speedup is 0.00
[20:37:43 [email protected][ ~]#rsync -av /root/sun /home/sun
sending incremental file list
sun/
sun/sun.log

sent 118 bytes  received 39 bytes  314.00 bytes/sec
total size is 0  speedup is 0.00
[20:37:54 [email protected][ ~]#tree /home/sun
/home/sun
├── null.test
├── sun
│   └── sun.log
├── sun.log
└── v2.0.tar.gz

1 directory, 4 files
           
  1. 本地主机使用远程shell和远程主机通信。命令行语法格式为"Access via remote shell"格式。
#Access via remote shell:
Pull:
rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push:
rsync [OPTION...] SRC... [USER@]HOST:DEST
           
  • 功能类似scp
  • 前边写源地址 后边写目标地址
  • 拉模式:想要的东东在远端,拉到本地
  • 推模式:把本地的东东推到远端服务器上
  • 做了相互免密就不需要写用户名和敲密码了
  • 远端服务器需要安装rsync软件,如果没安装则传不过去
[20:48:33 [email protected][ ~]#rsync -ac /root/sun/sun.log [email protected]:/root/
bash: rsync: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.3]
           
  • 远端服务器安装rsync后可用
[20:53:46 [email protected][ ~]#rsync -ac /root/sun/sun.log [email protected]:/home/sun/
[20:54:01 [email protected][ ~]#rsync -ac /root/sun/ [email protected]:/home/sun/
[20:54:10 [email protected][ ~]#rsync -ac /root/sun [email protected]:/home/sun/
[20:54:14 [email protected][ ~]#rsync -assh 10.0.0.192
Last login: Fri Jun  4 04:53:08 2021 from 10.0.0.88
mount: /linux43: special device //172.17.0.253/linux43 does not exist.
[[email protected] ~]# tree /home/sun
/home/sun
├── sun
│   └── sun.log
└── sun.log

1 directory, 2 files
           
  1. 本地主机通过网络套接字连接远程主机上的rsync daemon。命令行语法格式"Access viarsync daemon"格式。
#Access via rsync daemon:
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-dameon服务
#推
[[email protected] ~]#rsync /etc/networks [email protected]::backup
[[email protected] ~]#rsync /etc/issue [email protected]::backup
[[email protected] ~]#rsync /etc/passwd 10.0.0.192::backup
[[email protected] ~]#rsync /etc/shells rsync://[email protected]/backup
#拉
[[email protected] ~]#rsync 10.0.0.192::backup/* /opt
[[email protected] ~]#rsync rsync://10.0.0.192/backup/* /mnt
           

rsync常见选项

-v:显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。
-P:显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)。
-n --dry-run :仅测试传输,而不实际传输。常和"-vvvv"配合使用来查看rsync是如何工作的。
-a --archive :归档模式,表示递归传输并保持文件属性。等同于"-rtopgDl"。
-r --recursive:递归到目录中去。
-t --times:保持mtime属性。强烈建议任何时候都加上"-t",否则目标文件mtime会设置为系统时间,导致下次更新:检查出mtime不同从而导致增量传输无效。
-o --owner:保持owner属性(属主)。
-g --group:保持group属性(属组)。
-p --perms:保持perms属性(权限,不包括特殊权限)。
-D :是"--device --specials"选项的组合,即也拷贝设备文件和特殊文件。
-l --links:如果文件是软链接文件,则拷贝软链接本身而非软链接所指向的对象
-z :传输时进行压缩提高效率
-R --relative:使用相对路径。意味着将命令行中指定的全路径而非路径最尾部的文件名发送给服务端,包括它们的属性。用法见下文示例。
--size-only :默认算法是检查文件大小和mtime不同的文件,使用此选项将只检查文件大小。
-u --update :仅在源mtime比目标已存在文件的mtime新时才拷贝。注意,该选项是接收端判断的,不会影响删除行为。
-d --dirs :以不递归的方式拷贝目录本身。默认递归时,如果源为"dir1/file1",则不会拷贝dir1目录,使用该选项将拷贝dir1但不拷贝file1。
--max-size :限制rsync传输的最大文件大小。可以使用单位后缀,还可以是一个小数值(例如:"--max-size=1.5m")
--min-size :限制rsync传输的最小文件大小。这可以用于禁止传输小文件或那些垃圾文件。
--exclude :指定排除规则来排除不需要传输的文件。
--delete :以SRC为主,对DEST进行同步。多则删之,少则补之。注意"--delete"是在接收端执行的,所以它是在:exclude/include规则生效之后才执行的。
-b --backup :对目标上已存在的文件做一个备份,备份的文件名后默认使用"~"做后缀。
--backup-dir:指定备份文件的保存路径。不指定时默认和待备份文件保存在同一目录下。
-e :指定所要使用的远程shell程序,默认为ssh。
--port :连接daemon时使用的端口号,默认为873端口。
--password-file:daemon模式时的密码文件,可以从中读取密码实现非交互式。注意,这不是远程shell认证的密码,而是rsync模块认证的密码。
-W --whole-file:rsync将不再使用增量传输,而是全量传输。在网络带宽高于磁盘带宽时,该选项比增量传输更高效。
--existing :要求只更新目标端已存在的文件,目标端还不存在的文件不传输。注意,使用相对路径时如果上层目录不存在也不会传输。
--ignore-existing:要求只更新目标端不存在的文件。和"--existing"结合使用有特殊功能,见下文示例。
--remove-source-files:要求删除源端已经成功传输的文件
           

小惊喜

linux数据同步工具rsync基本应用rsync