前言
2台主机间文件同步需求
介绍
rsync 是一种高效的文件同步工具,广泛用于 Linux 系统中。它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件。rsync 的一个显著特点是它仅传输变化的文件部分,这种增量备份方式大大提高了数据传输的效率
# 安装
sudo apt update
sudo apt install rsync
# 运行
rsync -avz --progress --delete 用户名@远程服务器地址:/远程/路径/ /本地/路径/
# 直接运行, 输入yes, 输入远程主机密码即可
rsync -avz --progress --delete aqhby@192.168.0.106:/opt/1panel/apps/gogs/gogs/data/git/gogs-repositories/ /opt/1panel/apps/gogs/gogs/data/git/gogs-repositories/
-a
:归档模式(archive)- 递归复制目录及其子目录。
- 保留文件的所有属性(如权限、时间戳、所有者等)。
- 等价于
-rlptgoD
(递归、链接、权限、时间、组、所有者、设备文件)。
-v
:详细模式(verbose)- 显示同步过程的详细信息,包括复制的文件名、进度等。
-z
:压缩传输(compress)- 在传输过程中对文件进行压缩,减少网络传输量,适合远程同步。
--progress
:显示进度- 实时显示每个文件的传输进度(已传输字节、速度、完成百分比)。
--delete
:删除目标多余文件- 使目标目录与源目录完全一致,删除目标中不存在于源的文件。
- 注意:此参数需谨慎使用,可能导致数据丢失!
免密同步配置
为了实现免密传输,可以通过生成和配置 SSH 密钥来避免每次同步时输入密码
如果想要rsync免密同步 则需要进行 rsync 配置
原理:
- client (你面前的机器) 有私钥
.ssh/id_rsa
- server(被连的机器) 的
~/.ssh/[authorized_keys]
存着本机的公钥(最先在本机上存在于.ssh/id_rsa.pub
), 就可以免密登陆 - 根据这个原理, 手动复制粘贴就行. 下面是用命令减少手工劳动的办法:
- 首先,在本地主机上生成 SSH 密钥。使用以下命令:
# 这条命令将会生成一个 RSA 类型的 2048 位的密钥对。你可以根据需要选择其他类型和位数
ssh-keygen -t rsa -b 2048
# 或者
ssh-keygen
# 遇到 Enter passphrase 时; 不要输入。如果输入, 连接时会被要求 密钥密码 输入密码
复制本地 .ssh/id_rsa.pub
内容, 粘贴在 server .ssh/authorized_keys
文件中; 注意!!! 一条记录只占一行
将公钥复制到远程主机
将生成的公钥复制到远程主机上,可以使用 ssh-copy-id 命令:# 用户名@远程主机 ssh-copy-id aqhby@192.168.1.106
也可以手动复制
再次运行, 则不再提示输入密码
rsync -avz --progress --delete aqhby@192.168.0.106:/opt/1panel/apps/gogs/gogs/data/git/gogs-repositories/ /opt/1panel/apps/gogs/gogs/data/git/gogs-repositories/
评论 (0)