我想使用rsync
来同步文件夹。 docker-machine
允许rsync
与-d option
。
docker-machine scp -r -d . machine-name:~
这个命令似乎有效,但是,我想将rsync
的使用扩展到:
rsync -rvz --delete --exclude-from=.rsyncignore -e 'docker-machine ssh machine-name' . :
我也尝试了以下命令:
sshpass -p "tcuser" rsync -rvz --delete --exclude-from=.rsyncignore . docker@`docker-machine ip machine-name`:
两个命令都是第一次同步所有内容,但是,一旦所有内容同步,我就无法再访问VM了。如果我尝试通过docker-machine ssh machine-name
访问VM,我会收到responseexit status 255
。怎么了?
你可以找到更多关于here的信息
1.- Dockerfile
FROM centos:6
# install rsync
RUN yum update -y
RUN yum -y install rsync xinetd
# configure rsync
ADD ./rsyncd.conf /root/
RUN sed -i 's/disable[[:space:]]*=[[:space:]]*yes/disable = no/g' /etc/xinetd.d/rsync # enable rsync
RUN cp /root/rsyncd.conf /etc/rsyncd.conf
RUN /etc/rc.d/init.d/xinetd start
RUN chkconfig xinetd on
# create the dir that will be synced
RUN mkdir /home/share
# just to keep the container running
CMD /etc/rc.d/init.d/xinetd start && tail -f /dev/null
2. - 在存储库目录中构建容器。
docker build . -t docker-rsync
3.-启动容器并将rsync服务器端口映射到特定的主机端口,比如
docker run -p 10873:873 docker-rsync
4.-现在我们需要同步我们的共享目录,并在任何更改后立即再次同步任何更改。 Rsync仅在初始同步后同步更改。
# initial sync
rsync -avP ./share --delete rsync://localhost:10873/example/
# sync on change
fswatch -0 ./share | xargs -0 -n 1 -I {} rsync -avP ./share --delete rsync://localhost:10873/example/
升级:因为docker机器改变内容而虚拟磁盘需要升级
在docker容器中更改文件时的第一个命令:
rsync --ignore-existing --sparse ...
第二,当docker机器在容器稀疏模式下创建新文件时,接着是:
rsync --inplace ...