将文件从远程服务器上的Docker卷复制到本地主机的最佳方法是什么?

时间:2015-12-18 15:05:56

标签: ssh docker file-transfer

我有,

  1. 我的笔记本电脑
  2. 我可以通过SSH进入SSH的远程服务器,其中有一些Docker卷,其中包含一些我想复制到笔记本电脑的文件。
  3. 复制这些文件的最佳方法是什么?使用诸如rsync之类的东西的加分点。快速/可以恢复/显示进度而不写任何临时文件。

    注意:我的远程服务器上的用户没有权限直接从/var/lib/docker中的卷装入scp数据,尽管我可以在那里运行任何容器。

2 个答案:

答案 0 :(得分:1)

我不确定这样做的最佳方法,但如果我是你,我会运行一个容器共享相同的卷(以只读方式 - 因为它似乎只是想下载文件卷)并下载论文。

此容器可以根据需要运行rsync。

答案 1 :(得分:1)

遇到此问题,我创建了dvsync,它使用ngrok建立了一个隧道,即使计算机位于专用VPC中,rsync仍使用该隧道来复制数据。要使用它,您首先要在本地启动dvsync-server,将其指向源目录:

$ docker run --rm -e NGROK_AUTHTOKEN="$NGROK_AUTHTOKEN" \
  --mount source=MY_DIRECTORY,target=/data,readonly \
  quay.io/suda/dvsync-server

请注意,您需要NGROK_AUTHTOKEN,可以从ngrok dashboard获得。然后在目标计算机上启动dvsync-client

docker run -e DVSYNC_TOKEN="$DVSYNC_TOKEN" \
  --mount source=MY_TARGET_VOLUME,target=/data \
  quay.io/suda/dvsync-client

DVSYNC_TOKEN可以在dvsync-server输出中找到,它是base64编码的私钥和隧道信息。复制数据后,客户端将退出。