跳转至

rsync 文件远程同步

概要: 本文使用rsync 3.2.7工具,简介同步文件或文件夹的方式

创建时间: 2022.11.27 11:15:17

更新时间: 2023.07.28 23:08:32

简介

rsync 即 Remote SYNChronize 的缩写,是一种用于在本地或远程拷贝/同步文件的工具。

安装rsync

基于RHEL系的Linux

Bash
dnf install rsync
基于Debian系的Linux
Bash
apt install rsync
macOS
Bash
brew install rsync

认识rsync

image.png

同步模式

本地模式

同步本机上的两个位置,即多位置冗余数据

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

远程模式

可以分为主动推送和主动拉取两种模式

PULL模式

将本地内容同步推送到远程服务器

Bash
rsync [optional modifiers] [USER@]HOST:SRC [DEST]

PUSH模式

将远程服务器内容同步拉取到本地

Bash
rsync [optional modifiers] SRC [USER@]HOST:[DEST]

常用参数

参数(简写) 参数(全写) 解释
-a --archive 归档模式,会同步源的权限等信息
-v --verbose 输出详细信息
-h --human-readable format 输出KB,MB,GB等可读性更佳的格式
-z --compress 在传输过程中启用压缩
-r --recursive 同步时包含源位置下的文件夹
--delete 删除目标位置中多余的内容
--progress 增加文件同步时的进度条
--exclude 排除符合模式的文件或文件夹
--include 包含符合模式的文件或文件夹
--max-size 指定可同步文件的最大体积

使用举例

同步src-a文件夹下所有文件到dst-a

Bash
1
2
3
4
mkdir src-a
mkdir dst-a
touch src-a/file{1..5}
ll src-a
image.png
Bash
rsync src-a/* dst-a
ll dst-b
image.png

提示

此处的 * 代表 src-a 文件夹下所有的文件到 dst-a 中,注意不包含文件夹

同步src-a文件夹下所有内容到dst-a

Bash
1
2
3
4
mkdir src-a/sub{1..3}
rm -r dst-a

rsync -r src-a/ dst-a/
image.png
如果需要将 src-a 整个目录(含顶层文件夹)同步到 dst-a 下,上面的命令需要微调
Bash
rm -r dst-a
rsync -r src-a dst-a/
image.png

同步归档src-a的全部内容到dst下

Bash
1
2
3
chmod +x src-a/file1
chown -R lzwang:lzwang src-a
ll src-a
image.png
首先是不包含文件所有者信息的同步
Bash
rsync -rvh --delete src-a dst1
ll dst1/src-a
image.png
下面是最常用的命令,用于同步源位置的文件内容到目标位置,且保留了文件的所有者信息
Bash
rsync -avh --delete src-a dst2
ll dst2/src-a
image.png
同时上面的 --delete 参数保证了目标位置的内容始终与源位置相同,如果源位置删除了某个文件或文件夹,那么目标位置也将同步删除
Bash
1
2
3
4
5
6
rm src-a/file2
rm -r src-a/sub3
ll src-a

rsync -avh --delete src-a dst2
ll dst2/src-a
image.png

为同步过程增加进度条

Bash
rsync -avh --delete --progress src-a dst3
image.png

参考