当前位置: 首页 > news >正文

远程服务器文件和本地文件同步的一个方法

背景:在远程服务器改代码并测试后(因为账号问题不允许直接 git),希望将更改同步到本地设备然后 git push 到代码仓库

方法

使用 scp 将远程服务器代码同步到本地设备

流程

  1. 在 mac 设置中找到 通用→ 共享→ 高级→远程登录,勾选☑️ ,设置允许访问用户(同时可以查看到设备 IP 地址)

  2. 实现无密码登录
    在远程服务器上生成 SSH 密钥对,ssh-keygen -t rsa -b 4096, 默认保存在 ~/.ssh/id_rsa,查看公钥cat ~/.ssh/id_rsa.pub,复制内容。
    在本地目录新建~/.ssh/authorized_keys,在authorized_keys中粘贴上一步的内容。

  3. 测试无密码连接
    在远程服务器下新建脚本,主要函数如下,通过 git diff比较远程机器和代码仓库的差异,然后将差异文件 scp 到本地设备。

主要代码如下:

import subprocessdef git_diff_name():result = subprocess.run(['git', 'diff', '--name-only'], stdout=subprocess.PIPE, text=True, check=True)file_paths = result.stdout.strip().splitlines()# Use list comprehension to filter out any empty paths and return the paths and filenamesreturn [(file, os.path.dirname(file)) for file in file_paths if file]def transfer_file(file_name, remote_user, ip_address, remote_path):scp_command = ["scp", file_name, f"{remote_user}@{ip_address}:{remote_path}"]try:# It's better to use a list for subprocess commands instead of a single stringsubprocess.run(scp_command, check=True)print(f"File '{file_name}' successfully !!! \n\t\t transferred to {remote_path}")except subprocess.CalledProcessError as e:print(f"Error occurred while transferring file '{file_name}': {e}")

通过调git_diff_name 函数获取文件差异, 然后通过 transfer_file 函数传输。


http://www.mrgr.cn/news/5326.html

相关文章:

  • pytorch 快速入门-方法篇
  • [LeetCode]438.找到字符串中所有字母异位词(C++)
  • 32次8.21(学习playbook-roles,脚本创建数据库和表,mycat读写分离)
  • 教你一键快速生成词云图片
  • 双向通信之Websocket
  • LeetCode 算法:划分字母区间 c++
  • MySQL: find_in_set基本使用
  • 发布MindSearch到ModelScope创空间
  • 线程的锁机制
  • 利用puppeteer将html网页生成图片
  • 网络编程
  • Neo4j 图数据库入门
  • Java爬虫图像处理:从获取到解析
  • 深入探索【Hadoop】生态系统:Hive、Pig、HBase及更多关键组件(上)
  • CSS3-新特性
  • 2024年如何将低质量视频变成高质量视频
  • 网安新声 | 网易云音乐崩了:网络安全如何守护在线体验
  • 【机器学习-监督学习】逻辑斯谛回归
  • 48、Python之模块和包:当导入模块时,Python解释器做了什么
  • ArcGIS热点分析 (Getis-Ord Gi*)——基于地级市尺度的七普人口普查数据的热点与冷点分析