先说一下场景,因为业务关系,客户很多是军警或者涉密部门
所以你懂的,他们的内网是和外网隔离的。
别说连外网,插个自己的 u 盘都报警。。。
所以目前把系统代码更新到现场,方法是公司里面写好后,把源码发到现场人员自己的电脑,然后使用现场单位提供的 [特供 u 盘] ,把代码覆盖到内网机器。。
而有时候需要在单位现场改代码,然后同步回公司,一般是内网机器下的代码改好后,把改动过的代码文件通过单位提供的 [特供 u 盘] ,拷到自己的电脑,然后用自己的电脑连外网同步到公司。。。。
有什么好的工具或者方法,不用手动复制粘贴呢,每次这么搞都很操蛋。。。
说白了,如何能轻松方便的往隔离外网的局域网机器里同步代码呢????
1
exip 2021-01-14 19:19:18 +08:00 via Android
你确定你把想要的功能实现了,还有回家过年?
|
2
polyang 2021-01-14 19:20:08 +08:00
没办法吧?要是有办法的话,人家搞内网的意义在哪儿?
|
4
mascteen 2021-01-14 19:21:49 +08:00 via Android
搞个跳板
|
5
lizytalk 2021-01-14 19:28:27 +08:00
就算对方的隔离有漏洞也别作死...
|
6
MeteorCat 2021-01-14 19:30:06 +08:00 via Android
军警涉密部门你还敢这么干
|
7
whitehack 2021-01-14 19:33:31 +08:00
老老实实的吧.别犯法.
|
8
php8 2021-01-14 19:35:41 +08:00 via Android
git 可以离线使用,把 repo 打个 zip 包,手动复制 zip 包,代码变更记录交给 git 管理
|
9
hinate 2021-01-14 19:37:37 +08:00 via iPhone
坚持向内同步,不要反向同步。
|
10
v2tudnew 2021-01-14 19:37:47 +08:00
我觉得如果实现了,是不是可以用作黑入呢?那是不是可以免费居住了呢?
|
11
kaneg 2021-01-14 19:44:13 +08:00 via iPhone
不管技术能不能做到,你都不能以身试法。
|
12
testver 2021-01-14 19:48:19 +08:00
|
13
7654 2021-01-14 19:49:04 +08:00
windows 的公文包
|
14
czfy 2021-01-14 19:52:26 +08:00
对于这类型客户,你首先要想的是这是否合法合规,而非是否方便
否则上面很多人已经提过了,很容易就进去了 |
15
EastLord 2021-01-14 19:55:47 +08:00
把代码背下来
|
16
loading 2021-01-14 19:57:40 +08:00 via Android
居然还能用特种 U 盘,应该用光盘啊。
|
17
mengyx 2021-01-14 20:06:08 +08:00
git bundle 了解一下 https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E6%89%93%E5%8C%85
或者 git patch 也可以 |
18
jimmyismagic 2021-01-14 20:16:32 +08:00
patch 再 apply 回去
|
19
AmitabhaPk 2021-01-14 20:42:16 +08:00
你这是找死啊兄弟,保密是天条。。。
|
20
dorothyREN 2021-01-14 20:43:41 +08:00
@czfy #14 这不是很容易,是肯定
|
21
boris93 2021-01-14 21:01:12 +08:00 via Android
这种地方我只强调三个规矩
合规 合规 还是,他妈的,合规 |
22
redtea 2021-01-14 21:08:52 +08:00 via iPhone
要是实现需求了,要吃花生米了。
|
23
LGA1150 2021-01-14 21:43:54 +08:00
git format-patch 或 git diff 生成补丁
拷贝到目标机后再 git am 或 git apply 打补丁 |
24
LGA1150 2021-01-14 21:46:50 +08:00
顺便补充下,git format-patch 生成的补丁是可以直接当电子邮件发送的,很多开源项目的维护也是靠的电子邮件发补丁,包括 Linux 内核
|
25
shijingshijing 2021-01-14 21:54:06 +08:00
怎么方便怎么来,一波骚操作,后半辈子就不愁吃住了。
|
26
wzzzx 2021-01-14 22:23:43 +08:00
不想努力了嘛?
|
27
janus77 2021-01-14 22:41:17 +08:00
前几个月还有新闻呢,医院系统 运维私自在外网访问内网机器 然后系统出故障了导致收入损失上千万 人蹲号子了
|
29
wc951 2021-01-14 22:43:50 +08:00 via Android 1
看来你们单位保密考试还是考的少了,去复习一下涉密人员管理条例以及国家保密法
|
30
Puteulanus 2021-01-14 23:00:46 +08:00 3
搜了一下,git 支持添加本地路径作为 remote https://superuser.com/questions/1367571/using-git-across-multiple-systems-without-network-access/1367582
特供 U 盘里直接拷整个 repo,当成 git 库来用怎么样,内网机器改完打个 commit,push 到特供 U 盘 repo,特供 U 盘插到你电脑上,你本地 repo pull 一下,联网了再 push 回公司 repo |
31
SIGEV13 2021-01-15 00:22:42 +08:00
商业机密是民法,国家机密是刑法。老哥量力而行 😜
|
32
fiveelementgid 2021-01-15 00:27:14 +08:00 via Android 1
您好,我是大陆北方网友,对您所说的技术要求很感兴趣🐶
|
33
swulling 2021-01-15 00:29:48 +08:00 via iPad
30 楼正解,在 U 盘里放一个 repo
|
34
340244120w 2021-01-15 06:41:12 +08:00 via iPhone
1 git patch,缺点是内网机器也需要装 git.
2 装个文件对比工具,内网机器保留两份源码,用其中一份修改,另一份用来被对比。最后用软件把差异文件导出来。 3 最简单粗暴的还是把修改后的项目从内网机器上压缩拷回来(只复制粘贴一次),回来直接覆盖本地项目不就可以了吗。 也完全不用拷 git repo |
35
614457662 2021-01-15 09:02:34 +08:00 via Android
@fiveelementgid 不是南方网友才对嘛 手动狗头
|
36
mcone 2021-01-15 09:18:29 +08:00
这年头,还真有自己找花生米吃的……
考试考少了 + 1 |
37
CloseToWheat 2021-01-15 09:43:13 +08:00
本地装 git 不够嘛?在内网提交到本地,到外网直接 push 啊
|
38
myd 2021-01-15 09:56:39 +08:00
git format-patch 生成补丁
|
39
wozhizui 2021-01-15 10:02:27 +08:00
你在内网环境搭建个 git 服务器不就可以了
|
40
wozhizui 2021-01-15 10:04:04 +08:00
然后统一由一个技术管理者,每天人肉将这个 git 服务器的硬盘插拔下来,带回你的公司。
这种场景,只能人肉插拔。 |
41
omghonor 2021-01-15 10:19:48 +08:00
相似业务,不过我们是金融行业,生产网络是专网,代码上传只能靠硬盘,下载要走流程。无解的。信息安全和稳定是头等大事。
|
42
zyq2280539 2021-01-15 10:23:26 +08:00
git patch
|
44
biguokang OP @340244120w 1 、2 这个可以,因为内网的要求只是不连外网,装个 git 没问题,所以把 u 盘做成一个 git 库可以。。。至于第 3 个其实无解,因为整个项目加起来可能有上 g 大,然后我们自己的电脑连外网都是用手机热点连外网的,流量伤不起,所以之前才要一个一个文件抽出来
|
47
yingfengi 2021-01-15 10:45:52 +08:00 via Android
加网闸,然鹅你的申请不会通过的
|
48
LLLYang 2021-01-15 10:50:53 +08:00
没啥用,我现在也是这样的
|
49
LLLYang 2021-01-15 10:51:20 +08:00
只能自己搞代码对比软件,然后一个一个类去对
|
50
biguokang OP @wozhizui 我的想法是再单位提供的 [特供 u 盘] 里放个 git 库,通过 u 盘来 git pull git push
|
51
young1lin 2021-01-15 11:04:03 +08:00
感觉你在刀尖上干活啊 [doge]
|
52
Judoon 2021-01-15 11:16:12 +08:00
把需要在前场变更的 git 仓库单独用 docker 建立一个 gitlab,数据以及 docker 镜像都放在移动硬盘。
每次使用的时候,插上硬盘,用 docker 把 gitlab 仓库在本地起起来,改完代码同步到本地的 gitlab 。拿回公司类似操作同步到公司总的 gitlab 服务器上。 为以防万一,硬盘可以做一些镜像备份或者在公司做实时同步之类的 |
53
qiumaoyuan 2021-01-15 11:20:39 +08:00
直接插着 U 盘写代码不就完了,一来编写和保存代码根本没多少 IO 工作,二来现在的 U 盘读写也不差,为啥非得拷出来?
|
54
IMCA1024 2021-01-15 14:00:04 +08:00
3 、4 年前,曾经一项目是 云南省公安厅的,经历跟楼主差不多 没办法 老老实实。
|
55
SmiteChow 2021-01-15 14:23:55 +08:00
git format-patch
git am |
56
no1xsyzy 2021-01-15 14:55:54 +08:00 1
你是不是忘记了 git 最初的使用方式?
邮件,发来发去。 邮件换成专用 U 盘没有什么本质区别。 |
57
iSecret 2021-01-15 15:25:03 +08:00
@Puteulanus 本地路径做 remote 仓库,刚刚实验了一下,可以 pull,但是 push 会报错,不知道是不是姿势不对。
```shell $ git push origin master Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Writing objects: 100% (3/3), 257 bytes | 257.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: error: refusing to update checked out branch: refs/heads/master remote: error: By default, updating the current branch in a non-bare repository remote: is denied, because it will make the index and work tree inconsistent remote: with what you pushed, and will require 'git reset --hard' to match remote: the work tree to HEAD. ... ! [remote rejected] master -> master (branch is currently checked out) error: failed to push some refs to '/Volumes/NONAME/test.git' ... ``` |
58
beryl 2021-01-15 16:23:26 +08:00
没有办法,之前做过类似的,甚至问题日志都是对着屏幕,手抄到纸上。
或者换个思路,在客户现场的内网环境电脑作为主开发,相当于驻场 |
59
niub 2021-01-15 16:58:07 +08:00
2019 年的时候去某银行 POC 的时候,也是这样哈哈,只不过当时用的云主机开发+部署
|
60
vivisidea 2021-01-15 23:01:28 +08:00
可以走 docker 部署么?每次直接同步镜像,而不是代码。。
|
61
dingwen07 2021-01-16 02:21:07 +08:00 via iPhone
如果有的话,试试看用麦克风和扬声器组网
|
62
Puteulanus 2021-01-16 03:04:19 +08:00
|
63
elintwenty 2021-01-16 10:04:08 +08:00
如果可以 docker 部署的话,直接切换镜像仓库进行同步就实现这些功能了,非常简单,就是拷贝镜像过程可能比直接拷贝代码长一些
|
64
user0 2021-01-16 15:42:31 +08:00
刚刚试了一下 git 本地仓库,仅供参考:
|
66
user0 2021-01-16 15:43:34 +08:00
# 以下操作在客户电脑
|
67
user0 2021-01-16 15:55:53 +08:00
1. cd proj-src #proj-src 为已开发的代码路径
2. git init 3. git add -A && git commit -m "Initial commit" 然后使用 u 盘把客户电脑上的代码仓库拷到自己的电脑上, 这个步骤只需要做一次 以后客户的代码一旦变更,仍然使用 git 提交到本地的仓库,不需要 git push, 然后将变更使用 git format-patch 生成 patch 文件, 最后用 u 盘把 patch 拷贝到自己电脑上就行了 |
68
qian19876025 2021-01-16 17:59:19 +08:00
成都的外包?
|
69
wolong 2021-01-16 18:06:21 +08:00 via iPhone
我以前做过内网涉密系统维护,只能用光盘拷文件,一插 u 盘就报警,虽然不至于坐牢,但是差点给我开了,后来研究了内网的报警系统,分析是系统会检测新增磁盘的可写性,把 u 盘设为只读应该没问题。然后大胆试了一下,果然没报警了。后来请示了领导问能不能用 U 盘这么用,领导说只要系统不报警随便你怎么玩。
我维护的那个系统安全级别比公安网低,楼主还是按规程来,麻烦就麻烦点,反正都计算在工作量里了,别节外生枝。既然都要插 U 盘,复制粘贴和 push pull 又有多大区别。 |
70
sprite82 2021-01-17 19:35:31 +08:00
内网的机器装一个 git,建立一个本地仓库,然后通过这个本地仓库在内网开发,出来时把整个仓库拷出来。然后在外面把这个仓库的提交记录什么的全都 pull 到你自己的电脑上,并进行 merge 等操作。同理 进去的时候,把外面的 git 仓库带进去即可。而不是一个个文件拷贝
|