使用版本控制同步 sftp 文件系统

2024-03-20

我最近开始为一个大学社团管理一个(小型)网站,显然(根据最后一个管理它的人的说法)访问该网站文件的方式是通过 SFTP。我使用 Linux Mint/Nautilus,所以这没有问题。不过,我还有一个本地副本,可以在上传之前使用 Apache/localhost 测试我的更改(暂时忽略我无法真正使其工作......)。我使用 Git 来跟踪我的更改。

有什么办法可以区分 SFTP 版本和我自己的版本,然后只更新更改的文件(基本上是通过 SFTP 进行某种同步),并且可能也将版本控制合并到其中?

顺便说一句,我之前对此的经验很少,因此我们将不胜感激。同样的情况也适用于相当简单的方法来做事,而不一定是最时尚但最糟糕的配置方式。

Thanks!


通过 SSH 使用 Rsync

如果他们运行的是真正的 SSH 服务器,而不是仅 SFTP 服务器,那么您可以使用 rsync 将本地更改推送到远程。例如:

cd /my/project/directory
rsync -PSauve ssh --exclude=.git * [email protected] /cdn-cgi/l/email-protection:/var/www/

您可能还想使用--delete选项,但如果可能存在仅存在于服务器端且需要保留的文件,请小心。

使用SFTP进行树操作

如果您无法使用 rsync,您可以将上游文件复制到本地分支,比较它们,合并您想要的任何更改,然后将结果推送回来。例如:

cd /my/project/directory
git checkout -b upstream
sftp -r [email protected] /cdn-cgi/l/email-protection:/var/www/\* .
git add .
git commit -m 'Import current files from upstream.'
git checkout master
git diff upstream
: # merge or modify files as needed
sftp [email protected] /cdn-cgi/l/email-protection:/var/www < <(echo 'put -r *')

使用 SCP 代替 SFTP

如果您无法使用 rsync,对于非交互式操作,SCP 通常比 SFTP 好得多。例如:

scp -r . [email protected] /cdn-cgi/l/email-protection:/var/www/

SCP 提供更简洁的界面,并支持符号链接(SFTP 不支持),但对于您的用例可能有其他限制。特别是,它可能不会打印它复制的空目录的名称;这是否重要取决于你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用版本控制同步 sftp 文件系统 的相关文章

  • Git - -m 是什么意思 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions In Gi
  • Composer - 添加 git 存储库而不使用composer.json

    我尝试从 github designmodo Flat UI 添加存储库 使用配置并收到错误No valid composer json was found in any branch or Your requirements could
  • Git 中“瓷器”一词是什么意思?

    瓷器 一词偶尔出现在 Git 文档中 这是什么意思 瓷器 是通常制造厕所 有时也制造洗脸盆等其他固定装置 的材料 这与 管道 实际的管道和排水管 不同 在 管道 中 瓷器为管道提供了更用户友好的界面 Git 类比地使用这个术语 将用户通常不
  • eGit 合并解决方案 - 使用您的副本

    我对 eGit 还是新手 我正在尝试弄清楚到底如何让 eGit 使用我的副本解决合并冲突 无需任何更改 我指的是 eGit Wiki 上的注释 http wiki eclipse org EGit User Guide Possible m
  • 如何在 git 中使用 --work-tree 选项?我不断收到错误消息

    我有一个普通的存储库 其中有一个工作树和一个与工作树位于同一目录中的 git 文件夹 我正在尝试使用以下命令从该位置外部运行 git 命令 git git dir path to repo git work tree path to rep
  • 如何使用java按上次更新时间对SFTP文件进行排序?

    I am having a set of text files in my FTP server 我想阅读今天之前上传的所有文件 其中我必须打印最后三个上传文件的属性 名称 上传时间 大小 现在我将能够打印 FTP 服务器中存在的文件的名称
  • 我们如何从团队项目中的所有 Git 存储库连接到 TFS?

    我正在运行最新的 Visual Studio 2013 Ultimate 和 Update 1 我们也有最新的 Team Foundation Server 2013 我们中的一些人对新的 Git 存储库集成感到非常兴奋 但似乎有一个相当大
  • jenkins构建完成后如何将更改推送到github?

    我有一个 jenkins 作业 它从 github 克隆存储库 然后运行 powershell 脚本来增加文件中的版本号 我现在正在尝试将该更新文件发布回 github 上的原始存储库 因此当开发人员提取更改时 他会获得最新的版本号 我尝试
  • 今天 iCloud + Core Data(2015 年 7 月 10 日)

    几年前 Apple 发布了 Core Data 应用程序的 iCloud 同步 然后我发布了一个适用于 iPad iPhone MAC 的应用程序 其共享模型使用新的 Apple 机制 事情并没有按预期进行 同步机制有时不起作用 例如 就我
  • 在2.0中实现SFTP

    我想在 NET 2 0 中编写SFTP 客户端和服务器 那可能吗 请给我一些建议 看一眼SharpSSH http www tamirgal com blog page SharpSSH aspx 它具有开源 BSD 风格许可证 并支持 S
  • CodeCommit 错误 Elastic Beanstalk (AWS)

    运行后 pip install upgrade awsebcli 尝试执行以下操作时出现以下错误 eb deploy 无法将代码推送到 CodeCommit 存储库 错误 CommandError 处理 git 命令时发生错误 错误代码 1
  • Jenkins Git 参数插件无法获取标签

    詹金斯版本 1 593 Git 参数插件 0 4 0 GIT 客户端插件 1 16 1 我使用私有 git 存储库 可以通过 ssh 访问 我的构建是参数化的 git参数是TAG TO BUILD 要构建的分支是refs tags TAG
  • git 存储库中的提交次数

    我的一个为期 5 个月的项目即将结束 作为毫无意义的统计数据的粉丝 我想知道自存储库启动以来已经进行了多少次提交 我怎样才能发现这一点 Notes 我知道没有one存储库 我只对本地版本感兴趣 这在颠覆中是微不足道的 因为修订标识符 似乎是
  • 连接两个 Git 存储库的历史记录?

    我有一个旧的 Git 存储库 请调用它app 然后 一年后 我想从头开始重建应用程序 所以我创建了一个新的存储库 称之为app 2 现在 我意识到我应该创建一个新分支或其他东西 而不是一个新的存储库 因为我想移动app 2在之上app然后摆
  • 如何将空目录添加到 Git 存储库?

    如何将空目录 不包含文件 添加到 Git 存储库 使目录 在存储库中 保持 几乎 空的另一种方法是创建一个 gitignore该目录中的文件包含以下四行 Ignore everything in this directory Except
  • 如何从现有的远程分支创建本地分支?

    我想从现有的远程分支 假设是远程 A 创建一个分支 然后将更改提交到存储库 我已使用以下命令从现有的远程 A 创建本地分支 git checkout remote A git branch master remote A 现在我已经使用以下
  • 通过 Git/SVN 将前缀 ? 添加到代码中

    怎么加前缀 v VersionNumber使用 Git SVN 高效地访问存储库中的每个文件 我发现 SO 使用这种做法为其存储库中的每个特定文件提供版本号 他们使用SVN 我想知道如何使用 Git 做同样的事情 举几个例子 1 2 在你的
  • 无法在heroku上推送node.js应用程序

    我尝试在heroku 上推送我的node js 应用程序 但是 无法检测到此应用程序的默认语言 我什至尝试过heroku buildpacks set heroku nodejs 但还是无法推动 Counting objects 31 do
  • git推送失败:`拒绝更新签出的分支:refs/heads/master`

    我想将我对 JBoss 配置的本地修改存储在 git 中 为此 我设置了以下结构 lrwxrwxrwx 1 jboss jboss 19 Jan 24 11 53 current gt jboss as 7 1 0 CR1b drwxr x
  • Git Bash Shell 可以使用默认的 Windows 快捷方式进行复制和粘贴吗?

    我希望能够使用 Ctrl C 和 Ctrl V 复制并粘贴到 Git Bash Shell 中 但是 shell 具有 Ctrl Insert 和 Shift Insert 作为这些操作 我没有看到更改这些快捷键的明显方法 我错过了一些明显

随机推荐

  • 显示目录列表控件中的文件

    有没有办法让用户使用 BrowseDlg 选择特定文件 我所能找到的是你只能选择一个文件夹 我相信文件选择是正在使用的 常见 功能之一 任何人都可以提供一些关于如何实现这一目标的建议 Thanks Update 我正在考虑为此创建一个 C
  • 如何使用 Uri 对象打开现有的 SQLite 数据库?

    我在用着Intent ACTION GET CONTENT选择一个文件 在方法中onActivityResult我得到的 Uri Uri selectedfile data getData 如何使用 Uri 对象selectedfile打开
  • 为什么 AVFoundation 不接受 iOS 设备上的平面像素缓冲区?

    我一直在努力找出我的代码有什么问题 我正在创建一个平面CVPixelBufferRef写信给AVAssetWriter 该像素缓冲区是通过其他一些过程手动创建的 即 我没有从相机或类似的东西获取这些样本 在 iOS 模拟器上 附加示例并创建
  • Xamarin Android 文件系统路径

    我正在尝试在 Android 文件系统上写入和读取文件 您认为这项任务很简单 但我似乎无法为实际存在的文件夹 路径找到正确的枚举器 我读过关于同一主题的几篇文章 但他们都没有给出这个问题的直接答案 而那些似乎已经解决了问题的人 却采用了似乎
  • Python dict 具有基于键的默认值

    我需要一个字典 它会自动填充每个缺失的访问键的默认值 我发现了defaultdict以及其他一些方法来实现此目的 但我的情况的问题是我希望每个键的默认值特定于该键本身 例如 与defaultdict我可以实现这样的目标 from colle
  • WPF 矩形填充水平或垂直线

    我正在尝试创建一个充满水平线或垂直线的矩形 矩形的宽度是动态的 因此我无法使用图像画笔 如果有人知道任何解决方案 请告诉我 我想出了一个直接的方法来做到这一点 最后 我使用以下视觉画笔资源分别用水平 垂直或垂直虚线填充矩形
  • VC++ 中的异常错误 c0000005

    正在开发 VC 控制台应用程序 此应用程序从 Appdata Roaming 文件夹发送文件一段时间 发生的情况是出现此崩溃错误 Problem signature Problem Event Name APPCRASH Applicati
  • 我是否必须在 iOS 的 Objective-C 中保留块?

    我想创建一个方法 它接受一个块 将其保存在成员中 启动异步任务 然后在异步调用进行完成回调时调用该块 我必须保留该块吗 块内存的管理方式是否与任何其他对象相同 我可以合成一个属性来持有该方块吗 块与内存管理的其他对象类似 但又不相同 当创建
  • Xamarin 强迫我下载 Android SDK 和 NDK

    我的计算机上安装了 Android SDK 和 NDK 在自定义位置 我正在尝试在 Windows 环境中安装 xamarin 但安装程序想要强制我安装 SDK 和 NDK 看起来无法通过安装文件夹找到 有没有解决方案可以指定何时安装我的
  • 如何以 json 格式(双引号)漂亮打印(人类可读的打印)Python 字典? [复制]

    这个问题在这里已经有答案了 这是一个后续问题this one https stackoverflow com questions 16087662 pprint how to use double quotes to display str
  • 错误:程序类型已存在:com.google.android.gms.internal.measurement.zzdz

    我看过关于这个主题的几篇类似的文章 但没有一个适用于我的情况 我根据这些帖子收集到 这可能是由我的 Firebase 依赖项之一引起的 但我不确定如何解决此问题 清理 失效等工作已经完成 我的所有依赖项都已更新到最新版本 这是我的 grad
  • NodeJS 响应当我直接从 MySQL 获取时 MySQL 时区不同

    当我直接请求MySQL时 我得到UTC日期 我在MySQL服务器中设置UTC 但是使用NodeJS我得到UTC 2本地时区数据 为什么 如何设置 NodeJS 获取 UTC 我在初始化mysql连接时在index js中添加了时区 var
  • Maya Python - 使用 UI 中的数据

    我正在开发一个脚本程序 并且在用户界面方面遇到了一些困难 我制作了几个用户界面 所有这些用户界面似乎都可以单独工作 但我不知道如何将用户界面中输入的数据使用到另一个函数 我正在尝试获取枪类型 由用户选择 Bullet Spray Gener
  • 使用 Revit API 进行编码:减少内存使用的技巧?

    我有一个非常 普遍 的问题 我正在使用 Revit API 使用 python 进行开发 有时我会观察到 Revit 会话在测试和试验期间变得更慢 Revit 保持打开状态的时间越长 这种情况似乎发生得越多 虽然还没有到真正有问题的地步 但
  • spring 将两个验证注释合二为一

    我在用着Spring Hibernate Spring MVC 我想定义一个结合其他两个预定义验证注释的自定义约束 NotNull Size像这样 import javax validation constraints NotNull im
  • 绝对值的 SUMIF

    我有一个电子表格 其值如下 A B 10 55 x 10 05 0 55 x 7 55 88 50 x 我想要所有行的绝对总和x in B 我可以得到 x 行的总和 SUMIF B2 B100 x A2 A100 以及所有 A 列的绝对总和
  • 无法构建 gem 本机扩展 — Rails 安装

    我一直根据 edX 在线课程的说明安装 Ruby on Rails 以下是终端命令的列表 以及相关的相应输出 sudo apt get install ruby1 9 1 安装成功 wget http production cf rubyg
  • Javascript:检查重复打开的窗口

    是否可以检查同一窗口是否已打开 例如我通过 javascript 打开了一个窗口 我可以通过javascript检查它是否在另一个页面上打开吗 只是想关注已打开的页面以避免重复窗口 谢谢 Look at window open 方法 您必须
  • python 中缺少 lxml 模块?

    我想用Python docx处理word文件的库 Adocx py参考lxml 正如我假设的那样 from lxml import etree 当我启动脚本时 出现错误 No module named lxml 这是标准库吗 那么为什么没有
  • 使用版本控制同步 sftp 文件系统

    我最近开始为一个大学社团管理一个 小型 网站 显然 根据最后一个管理它的人的说法 访问该网站文件的方式是通过 SFTP 我使用 Linux Mint Nautilus 所以这没有问题 不过 我还有一个本地副本 可以在上传之前使用 Apach