我想从其他网站传输一些数据。他们有一个SSH服务器,我通过它连接到该站点。 连接后,我使用SFTP命令到内部机器(我无法直接从我的机器访问)并获取数据。
我现在想传输一个大的bz2文件。
问题是我使用的SSH机器(连接数据)只能容纳50GB左右。
所以这就是我正常做的(下面),但现在我想通过SSH机器传输这个bz2文件中的所有子文件夹。
目前的步骤如下:
ssh george@ssh.abc.com
sftp george@bigserver.abc.com
cd /temp/george
get file.txt
bye
exit
现在从我的本地机器:
sftp george@ssh.abc.com
get file.txt
bye
如果有帮助,我的数据文件中也有一个UNZIPPD文件夹。
我想做什么:
1)我想通过SSH服务器将整个文件夹传输到我的本地机器,但正如我所提到的,SSH服务器一次只能容纳50GB。 我也想这样做,我可以启动它而不必手动,逐个文件(像现在一样)。
2)也不想在中途丢失SSH / SFTP连接。
对我可以使用的脚本的任何建议都将非常感激。
答案 0 :(得分:2)
ssh
(至少在openssh实现中)允许您在连接时设置端口转发:
ssh -L 4444:bigserver.abc.com:22 george@ssh.abc.com
将在本地打开4444端口。
现在,连接到localhost:4444实际上将通过SSH隧道转发:
sftp -P 4444 george @ localhost
但是,请注意,您必须确保主机密钥符合您的预期,因为您的本地SSH不会期望bigserver的SSH密钥。
答案 1 :(得分:1)
使用
rsync -PvL george@bigserver.abc.com:/temp/george/file.txt .
它使用ssh,如果连接断开,你可以重新运行命令并从你离开的地方继续
答案 2 :(得分:0)
1st - sftp有-r标志来获取递归获取目录的命令。
第二 - 看看ssh转发,(即标志-R和-L到ssh命令)。我们的想法是使用 ssh.abc.com 作为代理。试试这个作为参考:http://blog.trackets.com/2014/05/17/ssh-tunnel-local-and-remote-port-forwarding-explained-with-examples.html。
第3 - 如果你在远程机器上有tar,你可能想在服务器上创建一个tar,将它定位到ssh连接,然后在本地端解压缩。 http://www.cyberciti.biz/faq/howto-use-tar-command-through-network-over-ssh-session/。可能对ssh隧道很有用。