我一直想搭一个自动备份代码(或者延伸一下,各类文件)的系统,为此研究过NAS,但是买现成的成本有点高,自己折腾又嫌太麻烦。前两天,无意中发现了一个把玩客云刷机成Armbian(一个基于Arm的Linux)系统的教程,大喜,就马上把我吃灰两年的玩客云刷成了Armbian,折腾了两天,总算弄好了,通过USB转SATA,挂载了一块闲置的200G的硬盘,这样存储一些代码文件完全够用了。 下面就是刷好的Armbian:
换了系统以后的Linux小主机:
这个玩客云是Cortex A5的芯片,性能比较差,但同时功耗也低,可以全天侯开机,所以就可以继续拿它做文章,再找一个自动同步、备份文件的解决方案就可以了。
一查还真有,就是今天要介绍的rsync
。
rsync 是一个常用的 Linux 应用程序,用于文件同步。 它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件(但不支持两台远程计算机之间的同步)undefined与其他文件传输工具(如 FTP 或 scp)不同,rsync 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。
那Windows上有这个rsync吗,毕竟,我是要从Windows往Linux同步文件。有!Windows平台有个cwRsync,
cwRsync is a packaging of Rsync for Windows
它就是rsync在Windows上的实现。方法已经有了,下面就开干了。
rsync --version
,发现已经有了,如果没有的,通过apt-get install rsync
安装一下就行rsyncd.conf
文件
虽然rsync已经安装了,但是需要它作为服务端运行,就要以守护进程也就是daemon的方式运行它。这时候就要用到一个etc目录下的/etc/rsyncd.conf
文件,这里需要注意的是,有些Linux发行版,比如我这个Armbian是基于Debian的,是没有rsyncd.conf这个文件的,需要先创建,然后再填写配置内容。如果本来就有这个文件,那就直接填写配置内容就行了。配置文件内容:# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:
uid = root
gid = root
use chroot = no
max connections = 2
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
lock file = /var/run/rsyncd.lock
[feng]
path = /mnt/file
read only = no
auth users = rsync
secrets file = /etc/rsyncd.secrets
list = no
这里简单说一下上面的配置项,也是参照别的教程改的,官方全部的配置项应该不止这些,但那不是我的研究重点,有这些就够用了。
rsync:123
就行了3.以守护进程(daemon)方式运行
以上各项配置好后,通过 rsync --daemon
来启动rsync就可以了,这样rsync就会以后台进程的方式运行,而且会开机自启。
这里再插一句,启动是启动了,那怎么停止呢,假如我修改了配置文件需要重启怎么办,这个我了解到的方法是先查出PID,然后通过kill PID来结束进程。rsync默认使用873端口号,所以我先通过lsof -i tcp:873
命令查出PID,然后kill PID
结束进程。
以上就是Linux上rsync作为服务端的安装部署过程,下面看Windows上rsync作为客户端的安装配置过程。
我下载的是x86那个版本。直接解压缩到你想放到的目录下,然后将目录 bin 的路径注册到环境变量 path 中,这样就可以直接在 cmd 窗口中写命令行了。
2.在 cmd 中通过命令行发起文件同步
我们先直接看一个可以运行成功的例子:
rsync --port=873 -av --progress --password-file=/cygdrive/d/test.password /cygdrive/e/test_projects/nsetter rsync@10.10.10.120::feng
rsyncd.secrets
里面写的密码,比如我这里是123,那就在这个文件里写个123就行了。下面是我把Windows上的一个目录同步到Linux下的结果,可能是因为局域网,速度还是很快的。
假如我要排除源目录下的某个文件或者目录,通过--exclude参数就能实现,非常简单,比如下面这个,我就把packages目录排除了,它不会被同步
因为rsync是增量同步,只同步有变化的文件,所以不用担心重复同步、徒增开销的问题,比如下面这个test.txt文件,我连续同步两次,第二次并没有同步,那个sending list下是空的。
以上就是我目前搭建和使用rsync的整个过程了,这基本已经满足了我的需求,接下来可能最多就是改进一下,把手输命令行改成自动化运行的脚本,在我看来,这个算得上是一流的同步、备份文件的解决方案了。毕竟,不但没花一分钱,还如此强大易用。
物过刚则易折的道理,我希望你能够明白。《梦华录》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。