Linux 日志相关服务(rsync、rsyslog、logrotate)的搭建和使用
# 1. rsync
- 增量备份
- 断点续传
- 权限保持
- 压缩传输
# 搭建 rsync 服务
# 第一步:安装 rsync 软件(通常系统已预装, 若没有安装执行以下命令)
apt-get install rsync # Debian/Ubuntu
yum install rsync / dnf install rsync # RHEL/CentOS
# 第二步:创建并编辑配置文件(配置文件:/etc/rsyncd.conf)
# 全局配置
uid = nobody # 运行 rsync 进程的用户,通常为 nobody
gid = nobody # 运行 rsync 进程的用户组,通常为 nobody
use chroot = yes # 是否锁定在模块目录(增强安全性)
max connections = 10 # 最大并发连接数
pid file = /var/run/rsyncd.pid # pid 文件路径
lock file = /var/run/rsync.lock # 锁文件路径
log file = /var/log/rsyncd.log # 服务运行日志路径
# 模块配置
[backup] # 定义一个共享模块
path = /data/backup # 共享模块对应的路径
comment = Backup Directory # 模块描述
read only = no # 是否为只读
auth users = backupuser # 允许访问的用户(多个用户用逗号分隔)
secrets file = /etc/rsyncd.secrets # 密码文件路径
hosts allow = 192.168.1.0/24 # 允许访问的 IP 或网段
# 第三步:配置认证文件(需配置文件中指定 secrets file 参数)
echo "backup-user:backup-password" | tee /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
# 第四步:启动服务
systemctl start rsync
systemctl enable rsync
# 客户端验证
echo "backup-password" > ./rsync.pass
chmod 600 ./rsync.pass
echo "rsync test" > ./test-file
rsync -av --password-file=./rsync.pass test-file rsync://backup-user@backup-host/backup/
# rsync 两种传输模式的对比



# 2. rsyslog
rsyslog 是 Linux 系统日志服务,提供:
- 本地日志收集
- 远程日志接收
- 日志过滤和分类
- 高性能日志处理
# 搭建 rsyslog 服务
# 第一步:安装 rsyslog 软件(通常系统已预装, 若没有安装执行以下命令)
apt-get install rsyslog # Debian/Ubuntu
yum install rsyslog / dnf install rsyslog # RHEL/CentOS
# 第二步:编辑配置文件 (主配置文件:/etc/rsyslog.conf 子配置文件:/etc/rsyslog.d/*.conf )
# 模块加载
module(load="imuxsock") # 本地系统日志
module(load="imklog") # 内核日志
module(load="imudp") # UDP接收
module(load="imtcp") # TCP接收
# 全局设置
global(
workDirectory="/var/lib/rsyslog"
)
# 规则集
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
local7.* /var/log/boot.log
# 远程接收配置
input(type="imudp" port="514") # 监听 UDP 514端口
input(type="imtcp" port="514") # 监听 TCP 514端口
# 模板定义
template(name="RemoteLogs" type="string" string="/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")
# 远程日志存储
if $fromhost-ip != '127.0.0.1' then {
action(type="omfile" dynaFile="RemoteLogs")
}

# 第三步:创建远程目录
mkdir -p /var/log/remote
# 第四步:启动服务
systemctl restart rsyslog
systemctl enable rsyslog
# 发送日志并验证
logger "This is a test log message"(执行该命令后也可通过 dmesg 查看日志信息)
# 查看日志
tail -f /var/log/messages
journalctl -u rsyslog
# 日志级别


# 3. logrotate
- 按时间或大小轮转
- 日志压缩
- 旧日志定期删除
- 轮转后执行自定义命令
# 搭建 logrotate 服务
# 第一步:安装 logrotate 软件(通常系统已预装, 若没有安装执行以下命令)
apt-get install logrotate # Debian/Ubuntu
yum install logrotate / dnf install logrotate # RHEL/CentOS
# 第二步:创建并编辑配置文件(主配置文件:/etc/logrotate.conf 子配置文件: /etc/logrotate.d/*)
# 全局设置
weekly # 轮转周期(常用值有 daily/weekly/monthly )
rotate N # 保留 N 个旧日志
create # 轮转后立即创建一个新的空日志文件,替代原始文件。某些服务(如 Nginx)要求日志文件始终存在,否则会报错
dateext # 使用日期后缀命名旧日志文件
compress # 使用 gzip 压缩旧日志文件(文件扩展名为 .gz)
delaycompress # 延迟压缩,本次轮转的日志在下一次轮转时才压缩。某些服务(如 MySQL)可能需要在日志轮转后继续写入旧文件,延迟压缩可避免问题
missingok # 如果日志文件不存在,不报错,直接跳过
notifempty # 如果日志文件为空,不执行轮转
# 包含其他配置文件
include /etc/logrotate.d/*
# 特定日志配置
/var/log/wtmp {
monthly # 每月轮转一次
create 0664 root utmp # 轮转后创建新文件,权限0664,属主 root,属组 utmp
minsize 1M # 文件大小超过1MB才触发轮转
rotate 1 # 保留1个旧日志
}
/var/log/btmp {
missingok # 如果文件不存在,不报错
monthly # 每月轮转一次
create 0600 root utmp # 轮转后创建新文件,权限0600,属主 root,属组 utmp
rotate 1 # 保留1个旧日志
}
# 第三步:启动服务
systemctl restart logrotate
systemctl enable logrotate
# 测试配置文件是否正常
logrotate -d /etc/logrotate.conf
# 手动轮转
logrotate -vf /etc/logrotate.conf
# 查看轮转状态
cat /var/lib/logrotate/logrotate.status

浙公网安备 33010602011771号