远程和本地文件的互相同步
文章目录
- 1、rsync实现类似git push pull功能
- 1. 基础概念
- 2. 示例操作
- 3. 定制化和进阶用法
- 4. 定时同步(类似自动化)
- 2 命令简化
- 1. 动态传参的脚本
- 2. Shell 函数支持动态路径
- 3. 结合环境变量和参数(更简洁)
- 4. Makefile 支持动态路径
使用场景,远程有一台无法连接互联网的服务器,性能强大;本地有一台性能差的电脑,但可以上网。那么要合并这两台电脑的功能,取其强,那么做为程序员,就是在本地编辑,再同步到远程,然后在远程执行。
rsync
是一个高效的文件同步工具,但它不像 Git 那样具有版本控制功能。你可以通过
rsync
在本地和远程主机之间同步文件,实现类似 Git 的
push
和
pull
操作。那么将使用rsync实现这个功能
1、rsync实现类似git push pull功能
以下是如何用 rsync
实现类似 Git 的 push
和 pull
操作:
1. 基础概念
- Push:将本地的文件同步到远程。
- Pull:将远程的文件同步到本地。
rsync
的基本语法:
rsync [选项] 源路径 目标路径
2. 示例操作
Push 操作:本地 → 远程
rsync -avz --delete /local/path/ user@remote_host:/remote/path/
/local/path/
是本地目录(注意末尾的/
)。user@remote_host:/remote/path/
是远程主机的目标路径。- 关键选项:
-a
:归档模式,保留文件权限、时间戳等。-v
:显示详细信息。-z
:启用压缩,提高传输效率。--delete
:删除目标路径中不在源路径中的文件,保持完全同步。
Pull 操作:远程 → 本地
rsync -avz --delete user@remote_host:/remote/path/ /local/path/
- 语法类似于
push
,只是把源路径和目标路径互换。
3. 定制化和进阶用法
排除某些文件或目录
使用 --exclude
选项:
rsync -avz --delete --exclude "node_modules/" --exclude "*.log" /local/path/ user@remote_host:/remote/path/
使用 SSH 密钥认证
为了避免频繁输入密码,可以设置 SSH 密钥认证:
- 生成 SSH 密钥:
ssh-keygen -t rsa
- 将公钥复制到远程主机:
ssh-copy-id user@remote_host
测试同步操作
使用 --dry-run
选项模拟操作,检查同步内容:
rsync -avz --dry-run /local/path/ user@remote_host:/remote/path/
4. 定时同步(类似自动化)
可以使用 cron
或 Windows 任务计划程序实现定时同步。例如:
Linux 上的 cron
示例
编辑 cron
:
crontab -e
添加如下内容,每 30 分钟同步一次:
*/30 * * * * rsync -avz --delete /local/path/ user@remote_host:/remote/path/
Windows 系统(任务计划程序)
将 rsync
命令写入 .bat
文件,并通过任务计划程序定时运行。
注意事项
- 没有版本控制:
rsync
不支持历史记录,如果需要像 Git 那样的版本管理,可以结合 Git 使用。 - 同步时注意删除操作:使用
--delete
时,要确保备份数据,以免误删文件。 - 网络问题:
rsync
的增量同步和中断恢复机制在网络不稳定时非常有用。
这套流程可以很好地模拟 push
和 pull
的功能,但如果需要更复杂的版本管理功能,建议直接使用 Git。
2 命令简化
如果路径是动态变化的,可以设计一个更灵活的解决方案,让你在运行时传递路径参数。以下是几种方法实现这一需求:
1. 动态传参的脚本
编写一个脚本,支持在运行时指定路径:
脚本内容
创建一个名为 sync.sh
的脚本,内容如下:
#!/bin/bash# 检查参数
if [ "$#" -lt 3 ]; thenecho "Usage: $0 [push|pull] [local_path] [remote_path]"exit 1
fiACTION=$1
LOCAL_PATH=$2
REMOTE_PATH=$3
REMOTE_USER="user" # 替换为你的远程用户名
REMOTE_HOST="remote_host" # 替换为你的远程主机if [ "$ACTION" == "push" ]; thenrsync -avz --delete "$LOCAL_PATH" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH"
elif [ "$ACTION" == "pull" ]; thenrsync -avz --delete "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH" "$LOCAL_PATH"
elseecho "Invalid action: $ACTION. Use 'push' or 'pull'."exit 1
fi
赋予执行权限
chmod +x sync.sh
使用方法
运行时传递路径:
./sync.sh push /local/path /remote/path
./sync.sh pull /local/path /remote/path
2. Shell 函数支持动态路径
在 Shell 配置文件(如 ~/.bashrc
或 ~/.zshrc
)中定义一个动态路径的函数:
函数定义
function sync() {if [ "$#" -lt 3 ]; thenecho "Usage: sync [push|pull] [local_path] [remote_path]"return 1filocal action=$1local local_path=$2local remote_path=$3local remote_user="user" # 替换为你的远程用户名local remote_host="remote_host" # 替换为你的远程主机if [ "$action" == "push" ]; thenrsync -avz --delete "$local_path" "$remote_user@$remote_host:$remote_path"elif [ "$action" == "pull" ]; thenrsync -avz --delete "$remote_user@$remote_host:$remote_path" "$local_path"elseecho "Invalid action: $action. Use 'push' or 'pull'."return 1fi
}
激活函数
source ~/.bashrc # 或 ~/.zshrc
使用方法
sync push /local/path /remote/path
sync pull /local/path /remote/path
3. 结合环境变量和参数(更简洁)
在脚本中结合环境变量,减少重复输入常用的用户名和主机名:
脚本内容
#!/bin/bashREMOTE_USER=${REMOTE_USER:-"user"} # 默认远程用户名
REMOTE_HOST=${REMOTE_HOST:-"remote_host"} # 默认远程主机if [ "$#" -lt 3 ]; thenecho "Usage: $0 [push|pull] [local_path] [remote_path]"exit 1
fiACTION=$1
LOCAL_PATH=$2
REMOTE_PATH=$3if [ "$ACTION" == "push" ]; thenrsync -avz --delete "$LOCAL_PATH" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH"
elif [ "$ACTION" == "pull" ]; thenrsync -avz --delete "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH" "$LOCAL_PATH"
elseecho "Invalid action: $ACTION. Use 'push' or 'pull'."exit 1
fi
运行脚本时指定环境变量
REMOTE_USER=myuser REMOTE_HOST=myhost ./sync.sh push /local/path /remote/path
4. Makefile 支持动态路径
用 Makefile 传递路径参数:
Makefile 示例
push:rsync -avz --delete $(LOCAL_PATH) user@remote_host:$(REMOTE_PATH)pull:rsync -avz --delete user@remote_host:$(REMOTE_PATH) $(LOCAL_PATH)
使用方法
运行时指定变量:
make push LOCAL_PATH=/local/path REMOTE_PATH=/remote/path
make pull LOCAL_PATH=/local/path REMOTE_PATH=/remote/path
通过这些方式,你可以实现动态指定路径,同时保持命令简洁,推荐根据使用场景选择 脚本 或 Shell 函数,它们最适合经常使用和路径灵活的需求。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
远程和本地文件的互相同步
文章目录 1、rsync实现类似git push pull功能1. 基础概念2. 示例操作3. 定制化和进阶用法4. 定时同步(类似自动化) 2 命令简化1. 动态传参的脚本2. Shell 函数支持动态路径3. 结合环境变量和参数(更简洁)4. Makefile 支持动态路径…...
![](https://i-blog.csdnimg.cn/direct/6127e45c34984198896de15e2c8822aa.png)
自然语言处理之jieba分词和TF-IDF分析
jieba分词和TF-IDF分析 目录 jieba分词和TF-IDF分析1 jieba1.1 简介1.2 终端下载1.3 基本语法 2 TF-IDF分析2.1 什么是语料库2.2 TF2.3 IDF2.4 TF-IDF2.5 函数导入2.6 方法 3 实际测试3.1 问题解析3.2 代码测试 1 jieba 1.1 简介 结巴分词(Jieba)是一个…...
![](https://i-blog.csdnimg.cn/direct/5d4a8a0614f344018f5b199a8730eb0e.png)
探索式测试
探索式测试是一种软件测试风格,它强调独立测试人员的个人自由和职责,为了持续优化其工作的价值,将测试学习、测试设计、测试执行和测试结果分析作为相互支持的活动,在整个项目实现过程中并行地执行。 选择合适的探索式测试方法我…...
![](https://i-blog.csdnimg.cn/direct/cf2b5baf26b146a0891493cb3953ca0f.jpeg)
服务器数据恢复—raid5故障导致上层ORACLE无法启动的数据恢复案例
服务器数据恢复环境&故障: 一台服务器上的8块硬盘组建了一组raid5磁盘阵列。上层安装windows server操作系统,部署了oracle数据库。 raid5阵列中有2块硬盘的硬盘指示灯显示异常报警。服务器操作系统无法启动,ORACLE数据库也无法启动。 服…...
![](https://i-blog.csdnimg.cn/img_convert/ddfc552460fbf47594bc369236b7097c.png)
ISP各模块功能介绍
--------声明,本文为转载整理------- ISP各个模块功能介绍: 各模块前后效果对比: 黑电平补偿(BLC) 在理想情况下,没有光照射的像素点其响应值应为0。但是,由于杂质、受热等其它原因的影响&…...
![](https://www.ngui.cc/images/no-images.jpg)
Python 数据建模完整流程指南
在数据科学和机器学习中,建模是一个至关重要的过程。通过有效的数据建模,我们能够从原始数据中提取有用的洞察,并为预测或分类任务提供支持。在本篇博客中,我们将通过 Python 展示数据建模的完整流程,包括数据准备、建…...
![](https://i-blog.csdnimg.cn/direct/104e94c0e16b4256afd62be49878c9ca.png)
深入学习RocketMQ
参考:RocketMQ从从入门到精通_rocketmq入门到精通-CSDN博客 1、消息的类型 普通消息 顺序消息 延时消息 批量消息 事务消息 2、在java中使用 2.1、pom.xml中加入依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId…...
![](https://i-blog.csdnimg.cn/direct/68a5cbe53f2e4b52aea3cf4d6cc3db0c.png)
国产编辑器EverEdit - 扩展脚本:关闭所有未修改文档
1 扩展脚本:关闭所有未修改文档 1.1 应用场景 当用户打开过多文档时,部分文档已经修改,而大部分没有修改,为了减少在众多已打开文档中来回跳转的不便,可以将没有修改的文档全部关闭,但目前提供的快速关闭窗…...
![](https://i-blog.csdnimg.cn/direct/becf78722e0d48b3a31b6687559744f5.png)
数据结构二叉树-C语言
数据结构二叉树-C语言 1.树1.1树的概念与结构1.2树的相关术语1.3树的表示1.4树形结构实际运用场景 2.二叉树2.1概念与结构2.2特殊的二叉树2.2.1满二叉树2.2.2完全二叉树 2.3二叉树存储结构2.3.1顺序结构2.3.2链式结构 3.实现顺序结构的二叉树4.实现链式结构二叉树4.1前中后序遍…...
![](https://i-blog.csdnimg.cn/direct/05815793712746dda4c578aab1a21a66.png#pic_center)
Python基于YOLOv8和OpenCV实现车道线和车辆检测
使用YOLOv8(You Only Look Once)和OpenCV实现车道线和车辆检测,目标是创建一个可以检测道路上的车道并识别车辆的系统,并估计它们与摄像头的距离。该项目结合了计算机视觉技术和深度学习物体检测。 1、系统主要功能 车道检测&am…...
![](https://www.ngui.cc/images/no-images.jpg)
代码随想录算法训练营第六十天|KM94.城市间货物运输Ⅰ|KM95.城市间货物运输Ⅱ|KM96.城市间货物运输Ⅲ
94. 城市间货物运输 I 2、Bellman_ford队列优化算法(又名SPFA) SPFA是对Bellman_ford算法的优化,由于Bellman_ford 算法 每次都是对所有边进行松弛,其实是多做了一些无用功。其实只需要对 上一次松弛的时候更新过的节点作为出发节…...
![](https://www.ngui.cc/images/no-images.jpg)
人工智能学习路线全链路解析
一、基础准备阶段(预计 2-3 个月) (一)数学知识巩固与深化 线性代数(约 1 个月): 矩阵基础:回顾矩阵的定义、表示方法、矩阵的基本运算(加法、减法、乘法)&…...
![](https://www.ngui.cc/images/no-images.jpg)
C++语言的学习路线
C语言的学习路线 C是一种强大的高级编程语言,广泛应用于系统软件、游戏开发、嵌入式系统和高性能应用等多个领域。由于其丰富的功能和灵活性,C是一门值得深入学习的语言。本文旨在为初学者制定一条系统的学习路线,帮助他们循序渐进地掌握C语…...
![](https://i-blog.csdnimg.cn/direct/a704b070dfad4f3fad0eaf504af4130a.png)
用于与多个数据库聊天的智能 SQL 代理问答和 RAG 系统(3) —— 基于 LangChain 框架的文档检索与问答功能以及RAG Tool的使用
介绍基于 LangChain 框架的文档检索与问答功能,目标是通过查询存储的向量数据库(VectorDB),为用户的问题检索相关内容,并生成自然语言的答案。以下是代码逻辑的详细解析: 代码结构与功能 初始化环境与加载…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.7/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=O83A)
20250110doker学习记录
1.本机创建tts环境。用conda. 0.1安装。我都用的默认,你也可以。我安装过一次,如果修复,后面加 -u bash Anaconda3-2024.10-1-Linux-x86_64.sh等待一会。 (base) ktkt4028:~/Downloads$ conda -V conda 24.9.2学习资源 Conda 常用命令大…...
![](https://www.ngui.cc/images/no-images.jpg)
MPU6050: 卡尔曼滤波, 低通滤波
对于MPU6050(一种集成了三轴加速度计和三轴陀螺仪的惯性测量单元),对加速度值进行卡尔曼滤波,而对角速度进行低通滤波的选择是基于这两种传感器数据的不同特性和应用需求。以下是详细解释: 加速度值与卡尔曼滤波 为什么使用卡尔曼滤波? 噪声抑制: 加速度计信号通常包含…...
![](https://www.ngui.cc/images/no-images.jpg)
C++的标准和C++的编译版本
C的标准和C的编译版本:原理和概念 理解 C标准 和 C编译版本 的关系是学习 C 的一个重要部分。这两者虽然看似相关,但实际上分别涉及了不同的概念和技术。下面将通过层次清晰的解释,帮助新手理解这两个概念的差异、特点及其相互关系。 一、C标…...
![](https://i-blog.csdnimg.cn/direct/3d493da621ab458998514e061468daca.png)
python学习笔记—17—数据容器之字符串
1. 字符串 (1) 字符串能通过下标索引来获取其中的元素 (2) 旧字符串无法修改特定下标的元素 (3) index——查找字符串中任意元素在整个字符串中的起始位置(单个字符或字符串都可以) tmp_str "supercarrydoinb" tmp_position1 tmp_str.index("s") tmp_p…...
![](https://i-blog.csdnimg.cn/direct/65b16edc63464552a6c7e36ec1f7586f.png#pic_center)
UE5 使用内置组件进行网格切割
UE引擎非常强大,直接内置了网格切割功能并封装为蓝图节点,这项功能在UE4中就存在,并且无需使用Chaos等模块。那么就来学习下如何使用内置组件实现网格切割。 1.配置测试用StaticMesh 对于被切割的模型,需要配置一些参数。以UE5…...
![](https://i-blog.csdnimg.cn/direct/47b8739c21a64a5693c12a3a2452334c.png)
51单片机——串口通信(重点)
1、通信 通信的方式可以分为多种,按照数据传送方式可分为串行通信和并行通信; 按照通信的数据同步方式,可分为异步通信和同步通信; 按照数据的传输方向又可分为单工、半双工和全双工通信 1.1 通信速率 衡量通信性能的一个非常…...
![](https://i-blog.csdnimg.cn/direct/2225de68cae34e8b9c57f62fd67cf8d3.gif#pic_center)
Taro+Vue实现图片裁剪组件
cropper-image-taro-vue3 组件库 介绍 cropper-image-taro-vue3 是一个基于 Vue 3 和 Taro 开发的裁剪工具组件,支持图片裁剪、裁剪框拖动、缩放和输出裁剪后的图片。该组件适用于 Vue 3 和 Taro 环境,可以在网页、小程序等平台中使用。 源码 https:…...
![](https://i-blog.csdnimg.cn/direct/7ce845f9d1094f2891ba4d6181ba5005.png)
PHP民宿酒店预订系统小程序源码
🏡民宿酒店预订系统 基于ThinkPHPuniappuView框架精心构建的多门店民宿酒店预订管理系统,能够迅速为您搭建起专属的、功能全面且操作便捷的民宿酒店预订小程序。 该系统不仅涵盖了预订、退房、WIFI连接、用户反馈、周边信息展示等核心功能,更…...
![](https://i-blog.csdnimg.cn/direct/1bdd02513a4c46edafeed1056e3eb2b3.png)
Hadoop3.x 万字解析,从入门到剖析源码
💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…...
![](https://www.ngui.cc/images/no-images.jpg)
VUE3 常用的组件介绍
Vue 组件简介 Vue 组件是构建 Vue 应用程序的核心部分,组件帮助我们将 UI 分解为独立的、可复用的块,每个组件都有自己的状态和行为。Vue 组件通常由模板、脚本和样式组成。组件的脚本部分包含了各种配置选项,用于定义组件的逻辑和功能。 组…...
![](https://www.ngui.cc/images/no-images.jpg)
deepin-Wine 运行器合并打包器和添加从镜像提取 DLL 的功能
Wine 运行器是一个图形化工具,旨在简化 Wine 环境的管理和使用。它不仅提供了运行和管理 Wine 容器的功能,还增加了打包器和从镜像提取 DLL 的功能。以下是该工具的详细介绍和使用方法。 一、工具概述 Wine 运行器是一个使用 Python3 的 tkinter 构建的图…...
![](https://www.ngui.cc/images/no-images.jpg)
[大模型]本地离线运行openwebui+ollama容器化部署
本地离线运行Openweb-ui ollama容器化部署 说明安装internet操作内网操作问题线程启动错误最终命令总结说明 最近公司有一个在内网部署一个离线大模型的需求,网络是离线状态,服务器有A100GPU,一开始是想折腾开源chatGML4大模型,因为使用过gml3,所以想着部署gml4应该不难。…...
![](https://i-blog.csdnimg.cn/direct/48db69ec3d6b4ed3a421d4b9384151c5.png)
再次梳理ISP的大致流程
前言: 随着智能手机的普及,相机与我们的生活越来越紧密相关。在日常生活中,我们只需要轻轻按下手机上的拍照按钮,就能记录下美好时刻。那么问题来了:从我们指尖按下拍照按钮到一张色彩丰富的照片呈现在我们面前&#x…...
![](https://i-blog.csdnimg.cn/direct/4b361f886d6847ff9ec173bd76c64917.png)
HBuilderX打包ios保姆式教程
1、登录苹果开发者后台并登录已认证开发者账号ID Sign In - Apple 2、创建标识符(App ID)、证书,描述文件 3、首先创建标识符,用于新建App应用 3-1、App的话直接选择第一个App IDs,点击右上角继续 3-2、选择App&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
《解锁鸿蒙系统AI能力,开启智能应用开发新时代》
在当今科技飞速发展的时代,鸿蒙系统以其独特的分布式架构和强大的AI能力,为开发者们带来了前所未有的机遇。本文将深入探讨开发者如何利用鸿蒙系统的AI能力开发更智能的应用,开启智能应用开发的新时代。 鸿蒙系统构筑了15系统级的AI能力&…...
![](https://i-blog.csdnimg.cn/direct/604370216fb04cff8f76e070b89aebf9.jpeg)
rhcsa练习(3)
1 、创建文件命令练习: ( 1 ) 在 / 目录下创建一个临时目录 test ; mkdir /test ( 2 )在临时目录 test 下创建五个文件,文件名分别为 passwd , group , bashrc &#x…...
![](/images/no-images.jpg)
网站用图片做背景图片/石家庄百度搜索引擎优化
C语言简介:BCPL->newB->C->UNIX->Linux->gccC语言专门编写操作系统的语言,所以天生适合对硬件编程,也以运行速度快著称,也非常适合实现数据结构和算法。由于出现时间过早,有很多缺陷,也没想…...
![](https://img-blog.csdnimg.cn/fd5d04f7381e4645a9d6735b32359efb.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ZGG5ZGG5YW95a2m57yW56iL,size_16,color_FFFFFF,t_70,g_se,x_16#pic_center)
众云网联做的网站效果好吗/长沙网站建设公司
⭐️本篇博客我要来和大家一起聊一聊数据结构中的二叉树的顺序结构的两个应用——堆排序和TOPK问题 ⭐️博客代码已上传至gitee:https://gitee.com/byte-binxin/data-structure/tree/master/Heap 目录🌏应用1——堆排序🍇堆排序的概念及原理&…...
![](https://img-blog.csdnimg.cn/20210513164049402.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDgyOTY1Mw==,size_16,color_FFFFFF,t_70#pic_center)
网泰网站建设/seo排名是什么意思
软件测试类型包括很多,但实际上,客户不会要求全部都涉及。今天我们就来说说集中常见的测试类型。此文小白适用。 NO.1 功能测试 功能测试主要验证功能模块是否正常。 NO.2 性能测试 性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。 主要…...
![](/images/no-images.jpg)
windows 做网站服务器/抖音seo是什么
再有五六天就开学了,查找有关搜索引擎排名,以下这篇文章还是比较不错的,先赞一个^_^!搜索引擎排名定义: 在搜索引擎里输入一个关键字,通常得到很多搜索结果,这些搜索结果的排名有先后之分,这…...
![](/images/no-images.jpg)
人大代表网站建设/google下载安装
正则化技术 一种防止过拟合,提高泛化能力的技巧,因此算法正则化的研究成为机器学习中主要的研究主题。此外,正则化还是训练参数数量大于训练数据集的深度学习模型的关键步骤。 正则化可以避免算法过拟合,过拟合通常发生在算法…...
![](https://images.cnblogs.com/cnblogs_com/gnielee/WindowsLiveWriter/Office2007_D316/regedit_thumb.png)
如何在服务器上搭建网站/免费网页制作网站
当点击邮件中附件时,Outlook可以对附件进行预览(如下图),如果将“Always warn before previewing this type of file”选项点掉后,每次预览该类型文件时则不再提示,大大方便了预览效果。 可是有时又需要Out…...