惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
NISL@THU
NISL@THU
T
Threatpost
T
The Exploit Database - CXSecurity.com
T
Threat Research - Cisco Blogs
S
Securelist
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
S
Secure Thoughts
MyScale Blog
MyScale Blog
O
OpenAI News
P
Palo Alto Networks Blog
美团技术团队
C
Cyber Attacks, Cyber Crime and Cyber Security
TaoSecurity Blog
TaoSecurity Blog
量子位
L
Lohrmann on Cybersecurity
G
GRAHAM CLULEY
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
Know Your Adversary
Know Your Adversary
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Simon Willison's Weblog
Simon Willison's Weblog
宝玉的分享
宝玉的分享
PCI Perspectives
PCI Perspectives
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tenable Blog
I
InfoQ
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements
S
Security @ Cisco Blogs
S
Schneier on Security
B
Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Cloudflare Blog
AWS News Blog
AWS News Blog
IT之家
IT之家
V
Vulnerabilities – Threatpost
The Hacker News
The Hacker News
H
Heimdal Security Blog
I
Intezer
A
Arctic Wolf
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
H
Help Net Security
W
WeLiveSecurity

陈陈菌博客

如何在 podman 容器内使用 systemd 在 podman 运行 GUI 应用的经验总结 管理 podman 容器与镜像的导入或导出 用 xdg-dbus-proxy 解决容器的文件选择器的问题 解决 VSCodium 或 Code-Server 无法安装 GitHub Copilot 问题 不可变发行版 Fedora Silverblue 的体验记录 解决 apt 或 dnf 无法 tab 补全的问题 对 (MPA) 多页面切换实现丝滑动画的探索 让服务在非 Root 权限下使用 80 或 443 端口 AppImage 应用打包快速上手 Flatpak 使用和应用打包快速上手 如何用 webSocket 实现一个实时聊天应用 Linux 内核编译 | 快速上手 | deb 使用 debootstrap 构建 Debian 系根文件系统 高度可定制的 KDE 窗口装饰器 klassy 有关 docker、podman、nspawn、bwrap 的 Linux 容器图形性能测试 创建任意 Linux 容器并支持 GUI 程序 (Docker) 创建任意 Linux 容器并支持 GUI 程序 (nspawn) 玲珑 (Linyaps) 应用打包 RPM 打包指南 | 精简版 PBR 材质的各种贴图类型入门 APU | Stable-Diffusion 使用记录 如何在 Electron 上启用 WebGPU Grub 主题安装与配置 Fcitx5 主题安装与自定义 不使用 Nginx 的网站开发指南 如何自制一个简易的资源监控程序 SQL 常用 CRUD 语法记录 Debian 打包入门,与需要注意的问题 在 fedora 建立一个 Arch 容器 (bwrap) 在 fedora 上建立一个 debian 容器 (bwrap) i3wm | 自制一个极简的屏幕亮度调节器 在 Linux 下启用内存压缩技术 zram 搭建一个本地轻量级聊天 Ai 我又又又重新上线了博客 如何通过命令行管理 wine 容器 (包括 proton) Btrfs 文件系统创建 swap 文件的方法 如何创建适用于 Linux 桌面的程序启动文件 在 Linux 控制 intel CPU 调度的方法 Arch Linux 的基本安装
文件同步工具 rsync 的使用
GlumiStudio@ · 2025-07-18 · via 陈陈菌博客

2025-07-18 17:17:45

分类: Linux 标签: 系统运维


rsync 全名叫 "remote sync"(远程同步),如它的名字意思一样,它可以用来做一些文件同步工作的。也就是从本机同步另一台计算机的文件,或反之。

它的主要优点:

  1. 支持增量同步传输:只传输变更部分
  2. 支持压缩:可减少传输数据量
  3. 支持多种协议:本地、ip、SSH、守护进程等
  4. 支持断点续传、权限保留、删除同步等高级特性

快速上手


使用它首先要在两台需要同步数据的电脑中都安装 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 只同步大小有变化的文件,不考虑文件修改时间的差异