前言
今天要迁移网站的数据,按照以前的老套路,反正数据也不多,都是直接服务器压缩好,然后下载下来再传到新服务器上去的。。。原始人做法,但也够用了。不过这次想这么干的时候发现,数据好像多了亿点点。。。
rsync 是个同步服务,配合 inotify 甚至可以做到多个服务器之间的数据实时同步,不过我只想快速迁移一下文件,而且有个附带好处是 rsync 同步数据后,可以保留数据的原始权限(好耶ヽ(✿゚▽゚)ノ,再也不用重设 docker 的权限了),粗略研究了一下就记录这里!
文件迁移
假设我们的源服务器是 A,要把数据迁移到服务器 B,用 docker 镜像(前提:A/B 都安装了 docker),使用 rsync 的 ssh 传输,用用户名和密码连接!
全程在 B 服务器中操作,首先挂载目录后进入容器内部:
docker run -v /root/rsync:/mnt -exec -it instrumentisto/rsync-ssh
因为在 docker 容器里面操作,所以需要把 B 服务器中的
/root/rsync
挂载进 docker 里面,用来存放传输过来的数据。然后输入如下命令:
rsync -avz --rsync-path="docker run --rm -i -v /root:/mnt instrumentisto/rsync-ssh rsync" \
-e 'ssh -p 12345' yourname@yourhost:/mnt/ /mnt/
如果 ssh 的端口非默认的 22 ,可以用
-e
参数来指定端口号!--rsync-path
中运行的命令都是在 服务器 A 上执行的,里面 -v
挂载的就是服务器 A 上需要传输过来的目录了!yourname@yourhost
改成你自己的服务器 A 地址。所以上面 2 行命令就是把服务器 A 上的 /root
文件夹内的数据,传输到 服务器 B 的 /root/rsync
里面去。
由于使用了用户名和密码登录,回车后会出现验证:
然后会弹出来需要输入密码,输入后回车,此时,就会自动传输数据了~
虽然好像没什么问题,但是还是建议传输数据的时候,关闭正在使用的服务!
Comments NOTHING