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

备份树莓派系统 更换成大容量卡

树莓派是一个学习的好工具,也是一个非常稳定的服务器,如果安装了一些了长期使用的服务,则系统的备份很重要,重新部署会非常痛苦。同时,很可能我们刚开始的时候安装的SD卡比较小,比如8G或16G,很快就没有空间了,更换成更大的卡十分必要。

网络上有各种关于系统备份和扩容的文章,可以提供很好的指导,从仅完成备份和扩容的角度看,其实可以比较简单地完成上述目标,不用很复杂的步骤和多个软件,而且系统可以备份成文件方便保存。

只需要两个步骤:

第一步 备份系统为img文件

1.用SSH工具进入树莓派后台。无论从什么地方,只要能连入系统就可以,没有打开ssh功能的按网络上的教程开启。

2.以sudo fdisk -l 命令查看挂载的磁盘信息, 确认需要复制的卷

在命令反馈比较多的信息时,大家可以对照磁盘的容量来辨认需要复制的SD卡的路径,如上图59.5 GiB, 63864569856 bytes,就表示与系统正在使用的卡信息一致,前面的/dev/mmcblk0 就是以后复制命令中要用到的绝对路径。

3.用dd命令将整个系统盘复制到指定位置,并保存为img文件

dd if=/dev/mmcblk0 of=/mnt/win/raspberrypi.img bs=1MB

以上if后面是树莓派系统文件路径,of后面是需要保存的文件的位置和名称,一般保存在插在USB口的设备中比较方便,U盘或移动硬盘都可以,具体路径可以在系统后台cd到它所在的目录,然后记下来。

第二步 将img文件写入新的SD卡中

1.下载balenaEtcher软件并打开运行,将第一步保存的img文件直接刷写进新卡。

这个软件是绿色是,不需要安装,最重要的是它可以直接刻写数据,无需事先对新盘进行格式化和确定文件系统,它是真正原版复制,在写盘的时候原文件是什么系统,写好的盘就是什么系统,所以不用管拿来的新盘是什么格式或有没有数据,直接刻就行了。

2. 新卡插入树莓派并开机运行,并设置将系统应用到整个SD卡

ssh进入系统后台,运行sudo raspi-config命令

选第7项,然后确认,退出面板,按系统要求reboot重启。

这样原有的系统完全一样地在新卡上运行了,并利用了新卡的整个容量,不再需要任何其它的配置。

说明:

1. 复制系统的命令中的路径,参数要注意,确保准确

2. 如果原系统容量不大,复制速度还是比较快的,大概超过10MB/s,但刻写有可能相对比较慢,刻写过程比较可靠。

3. 复制出来的文件其实是整个SD卡,有人通过调整大幅减少保存镜像文件的大小,我没有试过,不知道是否可行,最重要的应该是保证系统完全一样,避免以后不可预知的错误。