XingYun blog
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具

XingYun

冲!
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具
  • VSCode图片预览插件 Image preview
  • Linux服务器
  • 记录git使用
  • mac终端
  • 代理
  • nginx部署网站
  • CDN与对象存储-七牛云
  • rsync:linux间的高效传输工具
    • 正则表达式
    • yarn
    • Alfred
    • npm
    • vim编辑器基础
    • docker部署node服务
    • lux一行命令下载全网视频
    • Chrome-Tips
    • 工具
    XingYun
    2022-01-21
    目录

    rsync:linux间的高效传输工具

    以前我向服务器传输文件用的是 scp,后来因为传输的文件量大了后,每次全量传输时间都很长,不能忍

    于是我换成了 FTP 的软件,它会比对本地和服务器的文件差异,只传输有变化的文件,速度快了不少,但是每次都需要打开软件去点点点, 不 cool

    直到我了解了 rsync

    # 一、rsync 是什么

    rsync (remote sync) 是一个常用的 Linux 应用程序,用于文件同步。
    与其他文件传输工具(如 FTP 或 scp)不同,rsync 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。

    rsync 的特点就是仅传输有变动的部分, 解决了 scp 传输的痛点

    # 二、rsync 加入我的工作流

    我的博客基于 vuepress 开发,本地编译后把编译生成的文件传输到服务器,由 nginx 代理

    我在项目的 pakage.json 中加入了 production 脚本

    执行步骤如图所示 vuepress build docs 打包完成之后 执行 sh build/upload.sh 脚本

    upload.sh 脚本就一行

    
    #!/bin/bash
    
    rsync -vrh --exclude={'vue-web/*','.git/*'}  /Users/xinyun/study/gcy-blog/webView root@0.0.0.0:/usr/share/nginx/html
    
    
    
    1
    2
    3
    4
    5
    6

    简单说下上面的参数:

    /Users/xinyun/study/gcy-blog/webView 为源文件夹
    root@0.0.0.0:/usr/share/nginx/html 为目标文件夹
    以源文件夹为基准更新目标文件夹的文件

    如果只想同步源目录 source 里面的内容到目标目录 destination,则需要在源目录后面加上斜杠。

    -r 表示递归,即包含子目录。注意,-r 是必须的,否则 rsync 运行不会成功。

    -v 显示传输过程的详细信息

    -h 以人性化风格显示详情

    --exclude 需要排除的目录,支持正则匹配,多个目录以 , 分隔

    运行结果

    可以看到传输信息

    sent 1.14M bytes  received 45.81K bytes  787.89K bytes/sec
    total size is 5.61M  speedup is 4.75
    
    
    1
    2
    3

    实际我的整个目录是大约 50m,实际传输只有 1.14MB

    利用 rsync 后我的博客更新只需要终端执行

    
    npm run production
    
    
    1
    2
    3

    nice

    # 删除目标文件夹的非目标文件

    使用 --delete 指令

    rsync 可以使用--delete 选项来删除目标文件夹中不存在于源文件夹中的文件。

    如果你想要删除目标文件夹中不存在于源文件夹中的文件,但不想删除非目标文件,可以使用--exclude 选项排除这些文件。例如,假设你的源文件夹是/source,目标文件夹是/destination,你想同步这两个文件夹,但不想删除/destination 中的非目标文件,可以使用以下命令:

    rsync -av --delete --exclude 'non-target-file.txt' /source/ /destination/
    
    
    1
    2

    这个命令将同步/source 和/destination 中的所有文件和文件夹,但排除名为 non-target-file.txt 的文件。这样,非目标文件就不会被删除。

    # 三、需要注意

    传输的双方都必须安装 rsync。

    我用 Mac 开发,服务器是 centos 系统,所以都自带 rsync 👏👏👏

    有关 rsync 更多细节可以查看阮一峰老师的rsync 用法教程 (opens new window)

    上次更新: 2023/04/05, 09:41:10
    CDN与对象存储-七牛云
    正则表达式

    ← CDN与对象存储-七牛云 正则表达式→

    最近更新
    01
    JavaScript-test
    07-20
    02
    二维码的原理
    07-20
    03
    利用ChatGPT优化代码
    07-20
    更多文章>
    Theme by Vdoing | Copyright © 2021-2023 XingYun | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式