Ubuntu 使用crontab定时备份log
rsyslog
在Linux上,默认情况下,所有日志文件都位于/var/log目录下,有几种类型的日志文件存储不同的消息,可以是cron,内核,安全性,事件,用户,这些日志文件大多由rsyslog服务控制。
在最近使用systemd的系统上,一些日志由journald守护程序管理,它们是二进制格式的,这些日志是易失性的,因为它们被写入RAM并且不能承受系统重启,它们经常在/run/log/journal/上找到,但请注意,也可以将journald配置为通过写入文件来永久存储日志消息。
我们将把rsyslog服务器配置为集中式日志管理系统,rsyslog服务将侦听udp/tcp端口, rsyslog使用的默认端口是514,在客户端系统上,rsyslog将通过UDP或TCP端口通过网络收集日志并将日志发送到rsyslog服务器。
使用syslog消息时,存在表征日志文件的优先级/严重性级别,即:
emerg,panic(紧急):0级 - 这是最低的日志级别,系统无法使用。
警报(警报):1级 - 必须立即采取行动。
错误(错误):3级 - 危急情况。
警告(警告):等级4 - 警告条件。
通知(通知):第5级 - 正常但重要的条件。
info(信息):6级 - 信息性消息。
debug(Debugging):Level 7 - 这是最高级别 - 调试级别的消息。
安装Rsyslog
默认情况下,在Ubuntu 16.04系统上Rsyslog安装非常的简单,只需要一个命令,你可以通过运行以下命令来安装它:
sudo apt-get install rsyslog
安装后,检查服务以查看它是否正在运行,运行sudo systemctl status rsyslog命令即可:
systemctl status rsyslog
一、日志外发(日志服务器配置)
1、登录到服务器/日志服务器
2、编辑配置文件
sudo vim /etc/rsyslog.conf
取消注释udp和tcp端口绑定的行:
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
3、如果你想限制访问特定子网,IP或域,请添加如下:
$AllowedSender TCP, 127.0.0.1, 192.168.10.0/24, *.example.com
可以在输入input(type=“imtcp” port=“514”)行后添加上面的行,请记住用正确的值替换给定的值。如下:
input(type="imtcp" port="514")$AllowedSender TCP, 127.0.0.1, 192.168.10.0/24, *.example.com
4、创建用于接收远程消息的新模板(在日志服务器配置)
让我们创建一个模板,指示rsyslog服务器如何存储传入的syslog消息,在GLOBAL DIRECTIVES部分之前添加模板:
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
& ~
收到的日志将使用上面的模板进行解析并存储在目录/var/log/中,文件命名遵循约定:%HOSTNAME% and %PROGRAMNAME%变量,即客户端主机名和生成日志消息的客户端工具:
& ~指示rsyslog守护程序仅将日志消息存储到指定的文件。
可以使用的其它变量包括:
%syslogseverity%, %syslogfacility%, %timegenerated%, %HOSTNAME%, %syslogtag%, %msg%, %FROMHOST-IP%, %PRI%, %MSGID%, %APP-NAME%, %TIMESTAMP%, %$year%, %$month%, %$day%
重新启动rsyslog服务以使更改生效:
sudo systemctl restart rsyslog
5、确认服务是否正在侦听已配置的端口:
ss -tunelp | grep 514
6、配置Rsyslog防火墙
如果你的ufw防火墙服务正在运行,请允许rsyslog防火墙端口:
sudo ufw allow 514/tcp
sudo ufw allow 514/udp
4、保存退出,重启服务
service syslog restart
二、日志外发(客户端)
sudo vim /etc/rsyslog.conf
1、允许保留FQDN:
$PreserveFQDN on
2、添加远程rsyslog服务器:
*.* @10.1.30.33:514
还可以使用FQDN而不是服务器IP地址:
*.* @fqdn-of-rsysog-server:514
以上行将允许通过UDP发送日志,因为tcp使用@@而不是单个@:
*.* @@10.1.30.33:514
或者:
*.* @@fqdn-of-rsysog-server:514
当rsyslog服务器关闭时,还要添加以下内容:
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
然后重启rsyslog服务:
systemctl restart rsyslog
二、 本地定期备份
首先:
开启cron日志
vi /etc/rsyslog.d/50-default.conf
找到
#cron.* /var/log/cron.log
去掉注释
重启rsyslog
service rsyslog restart
此时就可以查看日志了
tail -f /var/log/cron.log
使用crontab
- 使用crontab
- 第一次使用需要选择编辑器
select-editor
-
crontab -e
-
每天23.30运行备份脚本
30 23 * * * /bin/bash /var/back_sh/back.sh
给脚本权限
chmod 777 /var/back_sh/back.sh
或直接编辑(针对系统的定时任务)
vi /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
30 23 * * * root /bin/bash /var/back_sh/back.sh
注
每天23.10运行备份脚本
脚本内容:
echo "The program being executed......"
back_dir=/var/dengbao/log_back
file_dir=/var/log
#定义备份文件名字
file_name=`date +%Y-%m-%d --date='-1 day'`
if [[ ! -d "${back_dir}" ]]; then
mkdir "${back_dir}"
fi
if [[ ! -d "${back_dir}/${file_name}" ]]; then
mkdir "${back_dir}/${file_name}"
fi
cp -r ${file_dir}/* ${back_dir}/${file_name}/
echo "succeed"
欢迎关注公众号:
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!知识源于分享!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!