rsync over ssh over socks

之所以要这么折腾,首先需要强烈谴责那些为某墙作出过贡献的程序员,解放后你们是一定会被清算的。

需求

这事的需求是这样的,我有几个国外的VPS用来跑自己和朋友的BLOG,为了保险起见,我搞了一套备份系统:

在家里的服务器上开了一个ZFS做远程VPS的备份,备份方法是每天晚上通过rsync over ssh进行同步,然后本地服务器生成快照做版本控制。

实现起来很简单,也可以满足需求:

如果远端VPS数据丢失(故障,意外删除,被黑等),我都可以立即重新开一个VPS,再把本地备份的数据恢复回去。即使是远程数据被错误修改,我也可以 通过本地ZFS的快照克隆出之前几天的备份来恢复。总体上说还是相当靠谱的——虽然目前也只恢复过一次,去年有一次DO的母鸡出了故障,VPS恢复后无法 SSH接入,它们那个破CONSOLE在国内根本连不上,只好重装。

但是现在问题来了。

因为rsync走的是SSH通道,而SSH协议是被监视的,流量一大就会被封,我因为这个备份功能被封了好几次,真是TMD想砍人。反革命都是这样被逼出来的。

然而在解放前,只能自己想办法解决了……

现在就来说说新的方案吧。

方案选择

本来是想参照前文说的那个方案用GPG加密后通过HTTP明文传输——因为某墙不会直接封杀明文的HTTP,只是会对其中传输的内容进行审查,但是因为经过了GPG加密,它也审查不出啥来,只是速度会慢而已,但至少不会断。

但是问题来了:因为GPG解密过程必须要有私钥密码,这个又必须是人工输入,不能自动输入(可以用GPG-agent在内存中保存一段时间不用重输,类似sudo输入一次密码可以用一段时间一样),所以无法做成自动任务。

于是只能继续在rsync上作文章。最后想到一个办法:

ssh over socks

方法如下:

首先你需要一个叫nc(netcat)的工具,这个FreeBSD是自带的,Linux需要另外安装。nc的全名叫做netcat,正如其名,就是一个网络版的cat,在Linux上它甚至被称为TCP/IP的瑞士军刀。

之后就是在~/.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值