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

推荐订阅源

P
Proofpoint News Feed
V2EX - 技术
V2EX - 技术
S
Secure Thoughts
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 最新话题
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News: Ask HN
Hacker News: Ask HN
T
Troy Hunt's Blog
Forbes - Security
Forbes - Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
P
Proofpoint News Feed
Know Your Adversary
Know Your Adversary
Schneier on Security
Schneier on Security
H
Heimdal Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Simon Willison's Weblog
Simon Willison's Weblog
V
Vulnerabilities – Threatpost
月光博客
月光博客
罗磊的独立博客
Webroot Blog
Webroot Blog
博客园 - 【当耐特】
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Cloudflare Blog
爱范儿
爱范儿
Last Week in AI
Last Week in AI
博客园 - 聂微东
博客园 - 叶小钗
美团技术团队
A
Arctic Wolf
P
Palo Alto Networks Blog
T
Tailwind CSS Blog
Cyberwarzone
Cyberwarzone
雷峰网
雷峰网
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
H
Hacker News: Front Page
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
Jina AI
Jina AI
C
Cyber Attacks, Cyber Crime and Cyber Security
The Last Watchdog
The Last Watchdog
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks
B
Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Privacy & Cybersecurity Law Blog

atpX

自建 S3 兼容对象存储服务 Garage 听风的歌 偶尔是深夜就好了 新玩具 AirPods Pro 3 公交车上的时间 从 WHOIS 到 RDAP 通过 WireGuard 访问 NFS 共享文件 自建音乐串流服务探索 我停止了探索 Fediverse 互联网背景噪音 我的数字生活降级 小城与确定性的墙 一只特立独行的猪 Fediverse 与社交 承认的勇气 mediaX - 轻量书影音记录管理工具 我的博客写作流程 网站新增 Misc 页面 擅长对线的鲍勃 在 Chroot 环境下使用 Rsync 同步 再见 JavaScript 当我玩博客时我在玩什么 为什么我的博客没有友链页面 小熊猫与大熊猫 (HDR 照片测试) 是时候为网站开启 HTTP/3 支持了吗 使用 AdGuard Home 搭建自用 DoH 服务 谈谈读书与消遣 2023 年终总结 西安两日游 从 AirPods「升级」到 EarPods Docker 搭建去中心化的微博客平台 Mastodon 聊聊 iPhone 15 Pro 使用感受 能否将 TOTP 二次验证存放在密码管理器里 认识史蒂夫·乔布斯 与“锤哥”克里斯·海姆斯沃斯一起养生 逃离爆炸的信息 你想活出怎样的人生 重温《龙珠》动画 为什么关闭评论 从域名注册商到 DNS 服务,找到自己的组合 如何提高用户网页阅读体验 从 Typecho 迁移到 Hugo 个人博客的最终归宿是静态网站吗 我选择了放弃 jQuery 关于我的小破站折腾速度优化这件事 记一次家庭网络折腾 贴一些 SmokePing 记录 我的域名邮箱选择 不存在的语录 Typecho 评论验证插件 CaptchaPlus 谈谈写字这件事 新的网站 Logo 探索 曲线解决 Typecho 图片占位抖动问题 自建 vaultwarden / bitwarden_rs 密码管理器 使用 Plausible 自建网站流量统计分析工具 如何优雅地徒手剥开火腿肠 简单的集中隔离生活记录 新玩具 M2 MacBook Air 使用 acme.sh 申请 Google 公共证书 Docker 搭建去中心化的微博客平台 Misskey 搭建 Lsky Pro 兰空图床 折腾树莓派系统的一天 我的吉卜力之旅 使用 Uptime Kuma 自建服务器/网站在线率监控 Spartan Host Review - Best Hosting & Service Support Debian 下 Nginx 配合 Fail2Ban 减少恶意扫描和攻击 升级 Typecho 到最新开发版本 v1.2.0 Linux rm 命令详解 Debian 系统安装 Docker 教程 BandwagonHost - Reliable Blog and Business VPS Hosting 使用 Isso 为 Hugo/Hexo 等静态网站添加评论功能 推荐 5 款免费开源的网站流量分析统计工具 搭建 Shynet 网站流量统计分析工具 聊聊 DDoS 攻击那些事 Hugo 使用 Fancybox 实现图片灯箱/放大功能 从 Debian 10 升级到 Debian 11 教程 使用 Umami 自建网站流量统计分析工具 Linux 一次执行多个命令的 3 种方式 Typecho 修改永久链接后旧链接 301 跳转到新链接 从不同需求推荐几家稳定可靠的 VPS 服务商 Build EchoIP service with Docker 浅谈一下这些年折腾过的 VPS 单线复用解决一根网线同时 IPTV 和宽带问题 不完全吃灰的树莓派 开发一个自己的 Telegram Bot 使用 Nginx 实现 TCP 四层反向代理 画画真难 我读村上春树 使用 acme.sh 自动签发和更新证书 卡拉马佐夫式悲剧 安装 File Browser 轻量网盘工具 新玩具树莓派到手 Linux 定时自动备份数据到 OneDrive/Google Drive 记一次服务器崩溃 短信的消失 幻灭的艺术家 新玩具戴尔 S2721DGF 开箱 蝴蝶 用 Docker 整合 SeafilePro 搭建私人云盘 搭建自己的 kms 服务器
使用 rsync 同步文件
ATP · 2020-11-11 · via atpX

本地环境是 Windows,一些数据都是使用 Git 同步 Linux 服务器上,但由于我修改文件的频率过高,用起来就很难受:( 经过一番探索后,决定使用 rsync 进行数据同步,运行原理见一位前辈的分析。使用下来感觉方便了不少,还可以通过脚本实现定时同步,定时备份,很实用的一个软件。

安装 Linux 服务端

# CentOS
yum install rsync
systemctl start rsyncd
# Debian
apt install rsync

由于 CentOS 库版本较低,所以编译安装,官网下载最新版本后解压,编译所需环境见文档

tar -zxvf rsync-3.2.3.tar.gz
cd rsync-3.2.3
./configure --prefix=/etc/rsync --disable-ipv6 --disable-xxhash --disable-lz4
make && make install

添加环境变量:

ln -s /etc/rsync/bin/rsync /usr/bin/rsync

rsync 有两种验证方式,一种是 SSH 认证,灵活性较高,只需要安装 rsync 就行了,不需要修改配置文件,另一种是 rsync-daemon 方式,默认使用 873/tcp 端口,若使用这种方式,需要修改如下配置文件:

vim /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

uid=root
gid=root
max connections=4
# port=873
# log file=/var/log/rsync.log
pid file=/var/run/rsync.pid
exclude = lost+found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
# hosts allow=*

[demo]
path=/home/demo
# auth users = root
secrets file=/etc/rsyncd.passwd
read only = no
comment = sync files

创建验证文件

vim /etc/rsyncd.passwd

添加用户和密码,如 root:111,修改之后修改文件权限

chmod 600 /etc/rsyncd.passwd

启动 rsync:

/etc/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf

安装 Windows 客户端

下载 cwRsync,之后添加环境变量以便使用 rsync 命令时识别 Windows 下的盘符路径,密码文件和服务端一致。

同步命令

常用参数如下:

-a 归档模式,使用递归传输并保持文件的属性
-v 显示传输过程
-z 传输中进行压缩,提高传输速度,文本文件建议使用
-u 增量更新
-e 指定使用ssh方式进行数据同步

--port=[端口号] 指定rsync服务端口
--delete 删除目标目录中有而源目录中没有的文件

将本地 /local/path/ 中的文件同步备份到远程 /remote/path/ 目录,path末尾的 / 表示拷贝当前目录下的文件,而不是拷贝当前的目录。

通过 SSH 方式:

rsync -avu -e "ssh -p [端口号]" /local/path/ user@ip:/remote/path/

通过 sync-daemon 方式:

rsync -avu /local/path/ user@ip::demo --password-file=rsync.password

* 我测试 ssh 方式时出现以下错误,未能解决 QAQ

rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(228) [Receiver=3.2.3]
rsync: [sender] safe_read failed to read 4 bytes: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(276) [sender=3.2.3]

* 2020.11.13更新:

后来又尝试 apt 安装 rsync 为 3.1.2 版本,为避免可能存在的问题,Windows 上也下载了相应的版本,再次尝试通过 SSH 同步,出现错误:

dup() in/out/err failed
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.2]

在 Stack Overflow 上发现了相同的问题,是由于 SSH 的版本不匹配,因为我同时还安装了 Git,就直接调用了 Git 的 ssh 导致报错,解决办法是指定使用 rsync 的 SSH:

rsync -avu -e "./ssh -p [端口号]" /local/path/ user@ip:/remote/path/

然后又用最新版本测试了下,成功同步。

不过同步之后发现文件的权限不对…毕竟跨平台传输,权限方式也不一样,查阅后发现可以使用 --chmod 设置权限,既然 chmod 都可以用,我又顺便试了下 --chown,也可以成功指定所有者,这下所有问题就基本解决了。

rsync -avu --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --chown=user:group -e "./ssh -p [端口号]"  /local/path/ user@ip:/remote/path/