Docker是一个相对封闭的环境,文件在其内外的传输不方便,有时需要重复地把一些固定目录文件保存到远程的某个地方,Rsync同步是一个不错的方案。
1、安装Rsync服务
1.1 进入终端安装Rsync服务
apt-get install rsync
注:由于是在Docker容器中,安装有可能报错
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
但不影响作为客户端正常使用。
1.2 配置客户端
[root@localhost rsync-3.1.3]# mkdir /etc/rsyncd #新建配置文件目录
[root@localhost rsync-3.1.3]# touch /etc/rsyncd/rsyncd.conf #新建配置文件
[root@localhost rsync-3.1.3]# touch /etc/rsyncd/rsyncd.secrets #新建登录服务器密码
[root@localhost rsync-3.1.3]# chmod 0600 /etc/rsyncd/rsyncd.secrets
[root@localhost rsync-3.1.3]# cat /etc/rsyncd/rsyncd.secrets #设置密码
**********
2、Rsync服务端配置
可以按网络教程在服务端启用Rsync服务,通用配置就可以了,无特殊要求。
3、 备份文件
由于客户端在Docker中,以上方法比较适合将客户端文件“推”至服务器
基本命令:
rsync -avz –chmod=Dugo=rxw,Fugo=rwx –delete –password-file=/etc/rsyncd/rsyncd.secrets /root/New backup@165.207.48.147::share
以上命令中:
–delete 以增量方式进行备份,删除服务器中有而推送端没有的文件,实现目标与本地的完全镜像。
–password-file 指出密码文件
–chmod=Dugo=rxw,Fugo=rwx 将备份到目的地的文件夹和文件去除权限属性。
以上是从Docker容器向远程服务器进行文件备份的一个特例,由于远程服务器有自己的文件权属管理规则,如果不去除权限属性,很可能造成除root帐户之外的用户无法读取和删除。如果目的地是在NAS中,去除权限后文件仍然可以受到NAS权限管理系统的保护。