[请教] 远程服务器如何主动给本地发送网络数据

我们一般通过 ssh 来登陆云服务器, 或者 scp 发送数据到云主机 但是如何把服务器的数据发送到本地呢?
例如经常在登陆的session里要传输一些数据过来, 就只好打开一个本地session再
scp root@~/something /local/...
或者有时候想要在HTTP请求里例如上传了图片的时候自动也上传到本地, 能做到吗?

据我了解好像是因为国内的网络对此有限制, 云主机不能直接访问普通家庭的IP地址, 就好像我不能用家里的电脑(连了网络的)做服务器搭建网站让外部可以访问
记得 黑客与画家 的作者就是这样起步的…

可以试试stun来保持NAT外面的端口。 在本地搞个定时发送IP地址和端口到邮箱

不过这个方法最大只能保持十几分钟 之后就得重新换端口

为了漫游可以套一层wireguard

:sweat:都没用过的…

好吧,如果只是同步文件,可以使用 syncthing,缺点是实时性有一点差。

syncthing也是用的stun。不需要用户关心具体实现。

最简单最安全就是本地定时去取。如果想要远程发起,可以试试这个:

提供个思路,用 IRC 然后 DCC,可以点对点传文件。

rz/sz 字数补丁

还可以弄个reverse ssh forwarding

这个是最直接的,不用管中间跳板机,直接穿透,但是速度比较慢。

我也是这样想的, 就像我现在做的一个实时更新系统设置(settings.json)就是定时(0.1~1秒检测一次)检查, 所以我在本地的 Sublime 一更新某个RGB, 就可以看到我线上正式版小程序里对应的地方标题立刻变(取决于本地网速, 大概不超过1秒吧) 我猜也没人想到这个, 是我被动想到的(因为小程序开发远远不能像Chrome那样方便, 上传后也不能实时更新)
给某同行看到也是吃一惊, 其实代码就加那么几行(本地watch到settings.json变化就上传到服务器, 服务器watch到这文件变化就广播给所有小程序客户端, 客户端watch到就更新到根部的 style, 里面的CSS变量类似Lisp的动态变量, 经典!) …

云主机可以的,也不需要做内网传透,数据转发这些

家用宽带做服务器建网站应该也是可以的,因为现在ipv6实际已经普及了,可以让所有设备都拥有公网ip直连,普通宽带也是支持的,但你的路由器如果比较老旧可能不支持ipv6,就只能换路由器了,如果是软路由应该肯定支持ipv6

我不知道为哈ipv6明明普及了但好像用的人很少 我也是最近换了个路由想折腾一下才想起来有ipv6这事

我最近想到个问题, 就是如何让服务器的 SBCL/SLIME 服务器自动在代码更新时重启
我现在基本的操作是:

  • git push 到服务器, 服务器的git hook 会自动把代码同步到在运行的服务器

  • 我写了一个函数(本质是shell)让服务器的数据库代码也更新:

  • 我要ssh到服务器里 tmux attach -t wecat 到我的服务器, 再人工手动重启我这服务器(因为代码更新了) image

  • 重新运行我的服务器:

虽然我这个操作已经很简单了, 一堆代码(包括数据库)同步到服务器不需要半分钟
疑问: 我能怎么写个脚本来打开 tmux 里的进程, 然后重启正在运行的SLIME, Emacs 对应JS的 setTimeout 函数有吗? 搜了都没搜到, 想要延迟执行基本都是会在同一个进程延迟着

https://www.gnu.org/software/emacs/manual/html_node/elisp/Idle-Timers.html

要的是 run-with-idle-timer ?

服务器通常都会有守护进程的吧,有守护进程在让服务器自己挂掉,守护进程就会重启它,楼主是想用elisp来写SLIME的守护进程吗,这个我也不会,我遇到进程间通信的问题都是让进程间发起websocket或http请求就过去了, 参考 https://www.gnu.org/software/emacs/manual/html_node/elisp/Asynchronous-Processes.html