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 只同步大小有变化的文件,不考虑文件修改时间的差异