Linux使用rsync客户端与服务端同步目录进行备份

一、服务端设置

1. 修改 server 端配置

# vi /etc/rsyncd.conf

修改:

uid = nobody                           # 该选项指定当该模块传输文件时守护进程应该具有的uid.默认值为”nobody”.
gid = nobody                           # 该选项指定当该模块传输文件时守护进程应该具有的gid.默认值为”nobody”.
max connections = 4                    # 最大连接数为4
use chroot = no                        # 不使用chroot
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
hosts allow = 28.16.67.10            # 哪些客户端IP可以访问rsync服务
#hosts deny = 192.168.100.0/24         # 哪些IP不可以访问rsync服务  0/24 代表 192.168.100 该IP段

添加一个自定义的同步模块配置:

[mysqlbackup]                          # rsync同步模块的设定名称
path = /mydata/mysql/data             # 需要同步的数据存放路径
comment = mysql backup folder          # 注释
auth users = root                      # 指定用户
ignore errors                          # 忽略错误
read only = yes                        # 只读
list = no                              # 不能列表
auth users = root                      # 连接rsync服务的帐号
secrets file = /etc/rsyncd.pwd         # 指定存放帐号密码的位置

2. 服务端生成密码文件

# echo root:123456 >> /etc/rsyncd.pwd

配置文件权限,仅允许 root 使用:

# chmod 600 /etc/rsyncd.pwd

3. 启动 rsync 守护进程方式启动

# rsync –-daemon

4. 添加到自启动文件

# echo "rsync --daemon" >> /etc/rc.d/rc.local

5. 检查 rsync 默认使用的是873端口,除非特殊情况,一般不要去修改

# netstat -na | grep 873

显示如下:

tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN
tcp 0 0 :::873 :::* LISTEN

二、客户端设置:

1. 生成密码文件 rsync 服务端 root 帐号密码 (注:只要密码)

# echo 123456 >> /etc/rsyncd.pwd
# chmod 600 /etc/rsyncd.pwd

2. 指定客户端目录与服务端指定的rsync模块配置的目录同步,并删除客户端存在而服务端不存在的目录或文件

# rsync -vzrtopg --progress --delete --password-file=/etc/rsyncd.pwd root@24.12.36.55::mysqlbackup /data/mysql

# -v, –verbose 详细模式输出
# -z, –compress 对备份的文件在传输时进行压缩处理
# -r, –recursive 对子目录以递归模式处理
# -t, –times 保持文件时间信息
# -o, –owner 保持文件属主信息
# -p, –perms 保持文件权限
# -g, –group 保持文件属组信息
# –-progress 显示传输进度
# –-delete 删除本地备份目录中服务器模块指定目录中没有的文件
# –-password-file 从指定文件中得到密码

3. 制定计划任务

# crontab -e

加入:

0 0 * * * rsync -vzrtopg --delete --password-file=/etc/rsyncd.pwd root@24.12.36.55::mysqlbackup /data/backup/mysql > /dev/null 2>&1
时间: 2024-09-20 07:10:53

Linux使用rsync客户端与服务端同步目录进行备份的相关文章

Linux下Rsync+sersync实现数据实时同步的例子

前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录. 二.Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别? 1.Rsync+Inotify-tools (1):Inotify-tools只能记录

io流-客户端读取服务端回执信息时出现error:org.apache.http.ConnectionClosedException

问题描述 客户端读取服务端回执信息时出现error:org.apache.http.ConnectionClosedException 具体error: org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body . (好像是回执信息数据太大) 网上搜了下,大概意思就是 : 本来在接管数据量,程序员显式封闭了连接(同步调用),而netty是异步处理惩罚,当连接被

Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信

Android BLE与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主从关系的客户端和服务端了,本文相关链接需要去google的API上查看,需要翻墙的 Bluetooth Low Energy:http://developer.android.com/guide/topics/connectivity/bluetooth-le.html 但是我们依然没有讲到BLE(

用socket编写的客户端和服务端,客户端可以通过服务端的域名发送消息吗

问题描述 用socket编写的客户端和服务端,客户端可以通过服务端的域名发送消息吗 本来要做GPRS通信模块发送命令到服务器端,服务器端根据命令做出反应,如果命令有需要还要返回数据到Gprs模块.网上搜怎么做,都是说用sokect做,我需要的是GPRS模块通过服务器的域名发送消息到服务端. 解决方案 如果是socket的话,gethostbyname是可以将域名转换成ip地址的 解决方案二: Linux socket客户端和服务端socket通讯 客户端和服务端socket的客户端和服务端的编程

使用Mina框架开发QQ Android 客户端(2) 客户端与服务端的通信

一个简单的例子,对Mina框架有了大体的了解,在上节的基础上,看看 怎样实现客户端与服务端的通信, 废话不多说了,直接看代码: public class Test { public static void main(String[] args) throws Exception{ SocketConnector connector = new NioSocketConnector(); IoFilter filter = new ProtocolCodecFilter(new TextLineC

客户端访问服务端时,通过ELB;ELB主动关闭第一次请求的源端口,导致后端反馈信息没法通信?

问题描述 客户端访问服务端时,通过ELB:ELB主动关闭第一次请求的源端口,导致后端反馈信息没法通信?

java-JAVA客户端与服务端通信问题

问题描述 JAVA客户端与服务端通信问题 25C public void sendCMD(final byte[] bufferfinal String ip){ new Thread(new Runnable() { @Override public void run() { Socket socket=null; try{ socket = new Socket(InetAddress.getByName(ip) Proxys.PORT_RECEIVE + Max); InputStream

unity局域网中客户端下载服务端的xml文件

问题描述 unity局域网中客户端下载服务端的xml文件 unity局域网中客户端怎样实现下载服务端的xml文件.顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

android通过socket通信实现客户端读取服务端的二进制数据,并展示在textview控件上

问题描述 android通过socket通信实现客户端读取服务端的二进制数据,并展示在textview控件上 客户端通过socket通信,完成读取服务端的二进制数据读取,并将数据显示在textview控件上,数据全为整型 解决方案 之前接触一些,但不是我我写的.JNI中C读取,生成Native方法.上层调用 解决方案二: 底层c来封装so文件调用socket API.上面Java调用so 解决方案三: ....java自己有socket啊,ls各位回答的什么意思.... 简单的socket网上教