day14:RSYNC同步
一,概述
概述
rsync
(开源)是一个高效的文件同步和传输工具,广泛用于 Linux 和 Unix 系统中。它可以在本地和远程系统之间同步文件和目录,同时支持增量备份,能够只传输更改过的文件部分,以减少带宽和时间。
扩展
sync(同步)
sync
是一种数据传输方式,其中数据在发送和接收之间是实时的。这意味着发送方在数据传输完成后,接收方才能开始处理数据。在这种模式下,所有操作都必须在数据传输完成后才能继续。sync
的典型应用场景包括文件系统的同步和实时数据传输。
async(异步)
async
是一种数据传输方式,其中数据的发送和接收是独立进行的。在这种模式下,发送方在数据传输的同时可以继续执行其他操作,而不必等待接收方确认接收完成。async
通常用于后台处理或延迟处理的场景。
rsync(远程同步)
rsync
是一个用于文件和目录同步的工具,支持本地和远程同步。它的主要特点是能够高效地只传输已更改的文件部分,从而节省带宽和时间。
同步方式
- 本地同步:在同一台机器上同步文件和目录。
- 远程同步:在不同主机之间同步文件,使用 SSH 或 RSH 协议进行安全传输。
- 增量同步:仅同步更改的部分,而不是整个文件,节省时间和带宽。
二,命令使用
命令概述
rsync [选项] 源 目标
选项 | 描述 | 示例命令 |
---|---|---|
-a | 归档模式:递归复制文件并保留所有文件属性。 | rsync -av --delete-after /local/dir/ user@remote:/remote/dir/ |
-r | 递归:复制子目录及其内容。 | rsync -avz --delete-after /local/dir/ user@remote:/remote/dir/ |
-v | 详细模式:输出详细的传输信息。 | rsync -av --delete-after --progress /local/dir/ user@remote:/remote/dir/ |
-z | 压缩:在传输时进行压缩,适用于慢速网络。 | rsync -avz --delete-after /local/dir/ user@remote:/remote/dir/ |
-e | 指定远程 shell:通常用于指定使用的传输协议,如 ssh 。 | rsync -av --delete-after -e 'ssh -p 2222' /local/dir/ user@remote:/remote/dir/ |
--delete | 删除多余文件:在目标目录中删除源目录中不存在的文件。 | rsync -av --delete /local/dir/ user@remote:/remote/dir/ |
--delete-after | 在传输后删除:完成文件传输后删除目标中多余的文件。 | rsync -av --delete-after /local/dir/ user@remote:/remote/dir/ |
--dry-run | 模拟运行:显示将要执行的操作,但不实际执行任何操作。 | rsync -av --delete-after --dry-run /local/dir/ user@remote:/remote/dir/ |
-u | 只更新:仅复制源文件比目标文件更新的文件。 | rsync -avu --delete-after /local/dir/ user@remote:/remote/dir/ |
--progress | 显示进度:在传输过程中显示文件传输的进度。 | rsync -av --delete-after --progress /local/dir/ user@remote:/remote/dir/ |
-h | 人类可读:以更易读的格式显示文件大小(如 KB、MB)。 | rsync -avh --delete-after /local/dir/ user@remote:/remote/dir/ |
-P | 部分传输和进度显示:显示进度并保留部分传输的文件。 | rsync -avP --delete-after /local/dir/ user@remote:/remote/dir/ |
--exclude | 排除特定文件或目录:在同步时排除某些文件或目录。 | rsync -av --delete-after --exclude '.git/' /local/dir/ user@remote:/remote/dir/ |
--include | 包括特定文件或目录:在排除前包括某些文件或目录。 | rsync -av --delete-after --include '*.txt' --exclude '*' /local/dir/ user@remote:/remote/dir/ |
本机同步
rsync -av /源地址 /目标地址
-a
:归档模式,表示递归复制并保留符号链接、权限、时间戳等。并且以递归方式(保证树形结构)-v
:详细输出,显示同步过程。- -r:用于拷贝目录
- -z:传输文件时压缩
远程同步
rsync -av /源地址 user@remote_host:/目标地址
user
:远程主机的用户名。remote_host
:远程主机的地址或域名。
三,作为服务器使用
目的
将 rsync
作为服务器使用,可以允许远程客户端访问并同步文件。这种方式可以简化多个用户或设备之间的文件同步。
实现
要设置 rsync
服务器,首先需要安装 rsync
,然后配置 rsyncd.conf
文件,基本步骤如下:
-
创建配置文件
/etc/rsyncd.conf
,包含如下内容:-
# 监听的端口 port = 873 #rsync默认端口 # 模块定义(隐藏一些信息) [back(自定义一个名字,建议见名知义)] path = /使用本模块后,文件存放的位置 log file=/var/log/日志文件 comment = 备注信息 read only = no # 允许写入 list = yes # 允许列出文件 auth users = 【secret或本地的用户】 # 允许的用户 secrets file = /etc/rsyncd.secrets # 密码文件路径
使用:rsync -avz root:xxx::[模块名] 目标
-
-
创建密码文件
/etc/rsyncd.secrets
,格式如下:-
user:password
-
-
启动
rsync
服务:- rsync --daemon(这个时间其放到后台,类似于rsyncd)
四,高级功能使用
rsync密码设置
为了保护文件同步的安全性,可以使用密码文件来控制对 rsync
服务器的访问。(可以不是linux的用户)
-
在
/etc/rsyncd.secrets
文件中添加用户和密码,格式为user:password
。 -
-
确保该文件的权限设置为仅限于
rsync
用户访问:-
chmod 600 /etc/rsyncd.secrets
-
-
-
使用
rsync
客户端连接时,指定--password-file
选项:(待用)-
rsync --password-file=/etc/rsyncd.secrets user@remote_host::模块名 /path/to/destination/
-
--password-file=/etc/rsyncd.secrets
:- 指定存储用户凭据的文件,
rsync
会从此文件中读取密码进行身份验证。 - 如果你在
rsync
模块的配置中已经指定了密码文件的位置,那么在命令中可以省略--password-file
选项。
- 指定存储用户凭据的文件,
-