是否有任何好的现有解决scheme将文件从主机A移动到主机C,使用主机B作为被动中间存储区域。
A→B→C
限制
目的是定期将文件从A移动到C,使用B作为中间存储区域。
我们可以假设所有主机都运行Unix / Linux。 首选工具:ssh / rsync / bash +其他“标准”工具。
我正在考虑通过在两个步骤中使用一些围绕rsync的bash脚本来创build解决scheme,并使用包含校验和的收据来检测文件何时成功移动。
有没有现有的解决scheme?
我没有看到需要在B上存储任何东西,你可以使用它代理A和C之间的连接,使用任何代理软件,如SSH端口转发或袜子。 也许你甚至可以通过B路由/ nat?
或者,因为您特意提出要按照自己的方式进行操作,您可以使用NFS / Samba来复制文件并使用各种方法validation完成情况。 想到的就是在共享上创build一个文件,在两个系统之间传递“复制完成”或“确定删除”types的消息。 或者就像你说的,MD5的东西,等等…但是你这样做,我敢肯定,这将是一个自定义的工作。 但不是一个困难的。 我怀疑现在有没有办法以这种方式处理你的问题。
斯文对你的问题的评论绝对是正确的做法。
你可以这样做:
从SSH到B
,在端口5000上创build隧道
ssh someuser@B -L 5000:127.0.0.1:5000
从B
上的shell,SSH到C
创build第二个隧道终止在C
的ssh服务器。
ssh someuser@C -NL 5000:127.0.0.1:22
从A
的第二个terminal,rsync你的文件直接C
rsync -avz -e "ssh -p 5000" --progress --remove-source-files /source/directory [email protected]:/destination/directory
甚至可以用一个命令在步骤1和步骤2中设置隧道,但是在我做的快速testing中,我无法做到。 可能需要在B
和C
上设置ssh密钥。
如果你要自动化复制过程,那么你可能需要看看autossh之类的东西,通过服务为你设置和拆卸隧道。 或者你可以通过cron来做到这一点..