Ubuntu 实现文件同步备份

Rsync(remote synchronize) 是一个远程数据同步工具,可以使用“Rsync算法”同步本地和远程主机之间的文件。Rsync的好处是只同步两个文件不同的部分,相同的部分不在传递。类似于增量备份,这使的在服务器传递备份文件或者同步文件,比起scp工具要省好多时间。
服务端:192.168.1.1
客户端:192.168.1.2
Ubuntu14版本以上都默认安装了Rsync,但是Rsync默认是不启动的,所以我们要修改一下配置文件
sudo vim /etc/default/rsync
RSYNC_ENABLE=true #false改成true
复制一份配置文件
sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc #因为Rsync默认是不启动的,系统默认不启动的文件似乎都是要这么做,不然不生效,具体原因待研究

接下来修改配置文件

sample rsyncd.conf configuration file

GLOBAL OPTIONS

#motd file=/etc/motd
log file=/var/log/rsyncd #开启日志文件,方便不成功查看原因

for pid file, do not use /var/run/rsync.pid if # you are going to run rsync out of the init.d script. # The init.d script does its own pid file handling, # so omit the “pid file” line completely in that case.

pid file=/var/run/rsyncd.pid #进程文件
#消息级别
#指定rsync发送日志消息给syslog时的消息级别
#常见的消息级别是:uth, authpriv, cron, daemon, ftp, kern,
#lpr, mail, news, security, sys-log, user, uucp, local0, local1,
#local2, local3,local4, local5, local6和local7。默认值是daemon。
syslog facility=daemon
#socket options=

#以下是模块信息,我们可以创建多个模块

MODULE OPTIONS

[ftp] #模块名称,该名称在客户端备份时需要用到

comment = public archive#模块描述
path = /home/backups#需要同步的路劲
#rsync在传输文件以前首先chroot到path参数指定的目录下。
#这样做的原因是实现额外的安全防护,但是缺点是需要root权限,
#并且不能备份指向外部的符号连接指向的目录文件。
use chroot = yes
#max connections=10 #最大连接数
lock file = /var/lock/rsyncd #指定支持max connections参数的锁文件

the default for read only is yes…

read only = yes #只读选项
list = yes #客户请求时可用模块时是否列出该模块
uid = nobody #设定该模块传输文件时守护进程应该具有的uid
gid = nogroup #设定该模块传输文件时守护进程应具有的gid,此项与uid配合可以确定文件的访问权限

#用来指定多个由空格隔开的多个模式列表,
#并将其添加到exclude列表中。这等同于在客户端命令中使用–exclude来指定模式,
#不过配置文件中指定的exlude模式不会传递给客户端,
#而仅仅应用于服务器。一个模块只能指定一个exlude选项,
#但是可以在模式前面使用"-“和”+"来指定是exclude还是include
#这个我的理解是排除目录中不需同步的文件
#exclude =

#exclude from = #可以指定一个包含exclude模式定义的文件名
#include = #参考exclude
#include from = #可以指定一个包含include模式定义的文件名

#该选项指定由空格或逗号分隔的用户名列表,
#只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。
#如果"auth users"被设置,
#那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的
#challenge/response认证协议。
#用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。
#默认情况下无需密码就可以连接模块(也就是匿名方式)
auth users = root

#该文件每行包含一个username:password对,
#以明文方式存储,只有在auth users被定义时,
#此选项才生效。同时我们需要将此文件权限设置为600
secrets file = /etc/rsyncd.secrets
strict modes = yes
hosts allow = 192.168.1.2 #允许的主机地址
#hosts deny =
ignore errors = yes
ignore nonreadable = yes
transfer logging = no
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.#设置日志格式
timeout = 600
refuse options = checksum dry-run

#告诉rysnc那些文件在传输前不用压缩,默认已设定压缩包不再进行压缩
rodont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

配置完成后创建密码文件
vi /etc/rsyncd.secrets
文件内容为
用户名:密码
保存后给该文件授予600权限

chmod 600 /etc/rsyncd.secrets

启动Rsync
sudo /etc/init.d/rsync start
以下说明表示启动成功

因为Rsync默认是873端口,我们要检查一下873端口有没有打开,如果没有就打开。
至此服务的配置完成

在客户端执行同步命令
rsync -vzrtopg --progress root@192.168.1.1::ftp /home/backups
#root 是在服务器配置的auth users用户
#ftp是在服务器配置时的模块名称

#/home/backups是备份目录

提示输入密码。如果提示错误看看配置文件有没有错误,备份位置是否正确配置。备份目录权限等。

以上备份命令只能主动备份,如果服务端有更新文件或文件夹就还要再次执行该条命令。为了做到自动备份。我们可以使用自带定时任务。
配置定时任务之前。我们首先要创建一个密码文件。
vim /etc/rsync.pwd
内容只需要填写密码就行,密码跟服务端配置的密码要一致,不用填用户名

然后给密码文件添加600权限
chmod 600 /etc/rsync.pwd
然后再给密码文件权限组。
chown 普通用户:普通用户组 /etc/rsync.pwd
配置完成后打开crontab
crontab -e
根据自己需求定义多久同步一次。命令自行查找资料,以下例子每分钟执行一次
*/1 * * * * rsync -a --password-file=/etc/rsync.pwd root@192.168.1.1::ftp /home/backups

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值