从零开始的运维学习笔记2-运维都会的存储备份服务-rsync,lsync,nfs

- 重要的资料光存在服务器上不保险,所以就需要使用到存储与备份服务
- 本次笔记介绍scp,rsync,lsync,nfs的用法
- scp是基于ssh的全量传输,使用简单方便,是运维常用的在服务器之间传输文件的方法,gitbash也可以使用scp指令从windows传输文件到Linux服务器。
- rsync主要用于文件的增量备份和远程同步,能够高效地同步两个目录之间的差异。
- lsync是一个实时监控本地目录并进行同步的守护进程,通常使用rsync作为后端进行文件同步
- nfs是一种分布式文件系统协议,允许客户端通过网络访问远程服务器上的文件系统。

1 rsync备份

1.1 rsync基础

1.1.1 scp和rsync

#scp为全量传输
#广泛用于文件传输
#建议传输压缩包
#-r 递归
scp -r /etc/ root@10.0.0.101:/tmp/
#scp清空密钥
ssh-keygen -R 10.0.0.101
#rsync为增量传输
#广泛用于备份
# -a递归  -v详细输出  -vvv超级详细
rsync -av /etc/ root@10.0.0.101:/tmp/

1.1.2 rsync本地模式

不推荐使用

rsync -a /etc/ /tmp/
rsync -a /etc /opt/

1.1.3 rsync远程模式

rsync -a /etc/hostname root@10.0.0.31:/tmp

1.2 rsync守护进程模式

rsync每次都要输密码,使用守护进程模式可以跳过输密码,这样会更方便编写脚本

1.2.1 rsync服务端部署

yum install -y rsync

/etc/rsyncd.conf #配置文件
/usr/bin/rsync   #命令
/usr/lib/systemd/system/rsyncd.service #systemctl对应配置文件

vim /etc/rsyncd.conf

fake super = yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 10.0.0.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[data]
comment = www by old0boy 14:18 2012-1-13
path = /data

后续配置

yum install -y rsync
#1.添加虚拟用户
useradd -s /sbin/nologin -M rsync
#2.创建密码文件
密码文件格式:   用户名:密码
echo 'rsync_backup:123' >/etc/rsync.password
chmod 600 /etc/rsync.password
#3.共享目录与权限
mkdir /data/
chown rsync.rsync /data/
#启动服务
systemctl enable rsyncd
systemctl start rsyncd
#检查进程
ps -ef |grep rsync
#检查端口
ss -lntup |grep rsync

1.2.2 客户端测试

echo 123 >/etc/rsync.client
chmod 600 /etc/rsync.client
rsync -avz /etc/hosts rsync_backup@10.0.0.101::data --password-file=/etc/rsync.client

1.3 定时rsync

  • 加入md5sum效验

1.3.1 客户端

vim /server/scripts/bak-conf.sh

#!/bin/bash
#1.vars
rsync_server_user=rsync_backup
rsync_server_ip=10.0.0.101
rsync_server_mod=data
rsync_server_pass=/etc/rsync.client
md5=bak.md5

rsync_client_backdir=/etc/

date=`date +%F_%w`
ip=`hostname -I |cut -d " " -f1`
bak_dir=/backup/$ip
bak_file=conf-$date.tar.gz

#2.create bak
mkdir -p $bak_dir
tar zcf $bak_dir/$bak_file $rsync_client_backdir
md5sum $bak_dir/$bak_file >$bak_dir/$md5

#3.transfer
rsync -avz $bak_dir $rsync_server_user@$rsync_server_ip::$rsync_server_mod --password-file=$rsync_server_pass

#4 clean
find $bak_dir -type f -name "*.tar.gz" -mtime +7|xargs rm -f

写入cron

echo "00 00 * * * /bin/sh /server/scripts/bak-conf.sh">>/var/spool/cron/$USER

1.3.2 服务端

/server/scripts/bak-check.sh

#!/bin/bash
#0.vars
date=`date +%F`
backDir=/data/
#1.clean old
find $backDir -type f -name ".tar.gz" -mtime +180 |xargs rm -f
#2.send check mail
find /backup/ -type f -name "bak.md5"|xargs md5sum -c &> $backDir/bak_result.txt
cat /backup/bak_result.txt|mail -s "$date 备份结果" 666@qq.com

写入cron

echo "00 00 * * * /bin/sh /server/scripts/bak-check.sh">>/var/spool/cron/$USER

1.3.3 mail.rc

配置163邮件的具体方法可以搜索其他教程,也可以删除脚本最后邮件发送指令
#未加密的发送方式通过25端口,会被公有云封掉.
cat >>/etc/mail.rc<<EOF
set from=打码@163.com
set smtp=smtp.163.com
set smtp-auth-user=打码@163.com
set smtp-auth-password=打码
set smtp-auth=login
EOF

#加密的方式465端口                    要配证书,忽略报错,可正常发送
cat >>/etc/mail.rc<<EOF
set nss-config-dir=/etc/pki/nssdb/          #加密方式配置
set smtp-user-starttls                      #加密方式配置
set ssl-verify=ignore                       #加密方式配置
set from=打码.com                #配置发件人
set smtp=smtps://smtp.163.com:465            #配置使用163邮箱发送邮件,不加密方式参考上面
set smtp-auth-user=打码.com      #邮箱名
set smtp-auth-password=打码              #授权码
set smtp-auth=login                         #认证形式
EOF

1.4 企业传输大文件补充用法

# --bwlimit=10000 带宽设置成10m
# --partial --partial-dir=.rsync-partial 传输中断继续传输
# --progress 显示传输进度
rsync -avz --progress --bwlimit=10000 --partial --partial-dir=.rsync-partial /root/node_exporter_install.sh root@172.20.128.39:/root/

2 NFS

2.1 NFS服务端部署

yum install -y rpcbind nfs-utils
systemctl eable rpcbind
systemctl start rpcbind
rpcinfo -p
systemctl eable nfs
systemctl start nfs
rpcinfo -p
# /etc/exports是nfs的配置文件,提供给客户端可挂载的路径
echo "/data/ 10.0.0.0/24(rw)">>/etc/exports
systemctl reload nfs
chown nfsnobody.nfsnobody /data/
#本机挂载测试
mount -t nfs 10.0.0.2:/data/ /mnt/
rpcinfo -p 10.0.0.2
showmount -e 10.0.0.2

2.2 客户端挂载

yum intall -y nfs-utils
mount -t nfs 10.0.0.2:/data /mnt
#永久挂载
echo "10.0.0.2:/data/  /mnt/  nfs  defaults  0  0">>/etc/fstab

2.3 NFS补充

2.3.1 相关配置文件

项目Value
NFS服务端/etc/exports
/var/lib/nfs/etab
NFS客户端/etc/rc.local或/etc/fstab
/proc/mounts

2.3.2 /etc/exports

服务端配置选项说明
rwread write
roread only
sync同步,只要用户上传,就写入数据
async异步,用户上传数据,nfs先存在内存中,过一段时间再集中写入
服务端配置选项说明
root_squash(默认)如果客户端是root访问,到了nfs服务会被压缩
no_all_squash(默认)如果客户端不是root访问,则不进行压缩
all_squash所有用户都压缩(不安全)
anonuid,anongid用于指定压缩的匿名用户(默认是nfsnobody,anonuid=65534,anongid=6553示范
rw #允许读写
ro #只读
sync #同步写入
async #先写入缓冲区,必要时才写入磁盘,速度快,但会丢数据
subtree_check #若输出一个子目录,则nfs服务将检查其父目录权限
no_subtree_check #若输出一个字目录,不检查父目录,提高效率
no_root_squash #客户端以root登录时,赋予其本地root权限
oot_squash #客户端以root登录时,将其映射为匿名用户
all_squash #将所有用户映射为匿名用户
#1.所有主机
useradd -u 1999 -s /sbin/nologin -M www
#2.nfs服务端配置
/nfsdata/ 10.0.0.0/24(rw,all_squash,anonuid=1999,anongid=1999)

2.3.3 NFS优化

mount -o noexec,nosuid,nodev -t nfs 10.0.0.0:/data /video/
#noexec 挂载的nfs目录中如果有命令,无法运行
#nosuid 带有suid的命令
#nodev  带有特殊属性的文件
10.0.0.0:/data /video/ nfs noexec,nosuid,nodev 0 0

3 lsync

rsync的客户端即lsync的服务端

yum install -y lsyncd

3.1 环境配置

/etc/lsyncd.conf

settings {
 logfile = "/var/log/lsyncd/lsyncd.log",
 statusFile = "/var/log/lsyncd/lsyncd.status",
 inotifyMode = "CloseWrite",
 maxProcesses = 8,
 maxDelays = 10,
 nodaemon = true,
 statusInterval = 10,
}
sync {
 default.rsync,
 source = "/testDir/",
 target = "rsync_backup@10.0.0.101::data",
 delete = true,
 delay = 15,
 rsync = {
  binary = "/usr/bin/rsync",
  archive = true,
  compress = true,
  verbose = true,
  password_file = "/etc/rsync.client"
 }
}
systemctl enable lsyncd
systemctl start lsyncd
systemctl status lsyncd

3.2 lsyncd监控多个目录

settings {
 logfile = "/var/log/lsyncd/lsyncd.log",
 statusFile = "/var/log/lsyncd/lsyncd.status",
 inotifyMode = "CloseWrite",
 maxProcesses = 8,
 maxDelays = 10,
 nodaemon = true,
 statusInterval = 10,
}
sync {
 default.rsync,
 source = "/testDir/",
 target = "rsync_backup@10.0.0.200::data",
 delete = true,
 delay = 15,
 rsync = {
  binary = "/usr/bin/rsync",
  archive = true,
  compress = true,
  verbose = true,
  password_file = "/etc/rsync.client"
 }
}
sync {
 default.rsync,
 source = "/testDir2/",
 target = "rsync_backup@10.0.0.200::nfsbackup",
 delete = true,
 delay = 15,
 rsync = {
  binary = "/usr/bin/rsync",
  archive = true,
  compress = true,
  verbose = true,
  password_file = "/etc/rsync.client"
 }
}
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值