rsync 全名叫 "remote sync"(远程同步),如它的名字意思一样,它可以用来做一些文件同步工作的。也就是从本机同步另一台计算机的文件,或反之。
它的主要优点:
使用它首先要在两台需要同步数据的电脑中都安装 rsync,它在 Linux 上的安装命令:
# Debian / Ubuntu
sudo apt install rsync
# Fedora / ReadHat
sudo dnf install rsync
安装完后在一端使用以下命令即可进行同步
rsync -r [源数据] [同步的目标]
其中 -r
代表递归文件包括目录。
把本机当前目录下的文件同步到 user@host:文件路径
下。
rsync -r ./ user@host:文件或目录路径
把远端 user@host:文件路径
下的文件同步到本机当前目录。
rsync -r user@host:文件或目录路径 ./
如果带 user@host 这些都是使用 ssh 协议,如果需要本地的同步也可以直接使用本地路径。 除此之外,还可以使用 ip 地址
rsync -r 192.168.31.121/模块名/文件路径
其中 模块名
指用 rsync 建立守护进程时直接对外开放的模块,需要自己分配。
rsync 服务端的模块通过配置文件(通常是 /etc/rsyncd.conf)定义
# 全局配置(可选)
uid = nobody # 运行 rsync 服务的用户
gid = nobody # 运行 rsync 服务的组
port = 873 # 默认端口(rsync 协议专用)
log file = /var/log/rsyncd.log # 日志文件路径
# 定义一个名为 "backup" 的模块
[backup]
path = /data/backup # 模块对应的实际实际目录
comment = Backup files # 模块描述(可选)
read only = no # 是否只读(no 表示可读写)
write list = admin # 允许写入的用户列表(需配合认证)
hosts allow = 192.168.1.0/24 # 允许访问的客户端 IP 段
auth users = admin # 允许访问的用户(需密码文件)
secrets file = /etc/rsyncd.secrets # 密码文件路径(格式:用户名:密码)
启动 rsync 服务器守护进程
rsync --daemon
-e
手动指定 ssh 传输端口
rsync -r -e 'ssh -p 2234' [源] user@remote_host:[目标]
--exclude
排除不同文件
rsync -r --exclude="*.zip" [源] user@remote_host:[目标]
如果排除的很多,可以使用 --exclude-from
来指定一个 txt 文件,每个模式一行
rsync -r --exclude-from='exclude-file.txt' [源] user@remote_host:[目标]
-delete
删除目标端存在而源端不存在的文件
-P
显示传输进度并支持断点续传
-v
-vv
-vvv
添加日志(从简单到详细)
-z
在传输过程中压缩文件数据。
--existing
只同步目标已经存在的文件和目录
-m
不同步空目录
--link-dest
那些没变动的文件会生成硬链接。这个命令的第一次传输时是全量备份,后面就都是增量传输。
--size-only
只同步大小有变化的文件,不考虑文件修改时间的差异