在Docker环境中实现不带权限的Rsync同步

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权限管理系统的保护。