HCRM博客

CentOS Shell一键操作,时间戳文件名,高效管理日志、备份与归档

CentOS shell获取当前时间并写入文件名:一步错,全盘乱,这招把日志、备份、归档一次管到底

在CentOS里跑脚本,最尴尬的不是命令写错,而是生成的文件叫啥自己都忘了。尤其是日志、备份、数据库导出,一旦重名,新文件直接覆盖旧文件,哭都来不及。今天这篇就给你一套“时间戳命名”万能模板,复制粘贴就能用,再也不怕文件打架。

CentOS Shell一键操作,时间戳文件名,高效管理日志、备份与归档-图1

一、为什么非得把时间塞进文件名

1. 防重名:同一份脚本跑多次,时间戳精确到秒,文件名天然唯一。

2. 易排序:20250917163001.log 这种格式,ls 一眼就能看出谁先谁后。

3. 好追溯:出问题按时间点找文件,省得翻箱倒柜。

二、最简命令:一行就能用

打开终端,直接敲:

CentOS Shell一键操作,时间戳文件名,高效管理日志、备份与归档-图2

touch my_$(date +%Y%m%d%H%M%S).txt

回车,你会看到当前目录蹦出个类似 my_20250917163001.txt 的新文件。

解释:date +%Y%m%d%H%M%S 会把时间捏成“年月日时分秒”连续数字,中间没空格,shell 友好。

三、脚本里怎么写:三行模板,谁都会改

#!/bin/bash

CentOS Shell一键操作,时间戳文件名,高效管理日志、备份与归档-图3

NOW=$(date +%Y%m%d%H%M%S)

tar -zcf /data/backup/www_${NOW}.tar.gz /var/www/html

把上面内容存成 backup.sh,chmod +x backup.sh 后执行,每次都在 /data/backup/ 里生成带时间戳的压缩包,旧包安然无恙。

四、想再短点:一行版也行

tar -zcf /data/backup/www_$(date +%Y%m%d%H%M%S).tar.gz /var/www/html

适合临时手打,懒得写脚本。

五、毫秒级精度:高手玩法

秒级不够?CentOS 7 以上自带 nanosecond 支持:

touch log_$(date +%Y%m%d%H%M%S%3N).log

%3N 取毫秒,一秒内跑一百次也不会撞车。

六、别踩坑:这些细节一次说清

1. 空格是炸弹:文件名里千万别带空格,日期格式用连续数字最稳。

2. 时区别忽略:服务器如果是 UTC,记得先执行 timedatectl set-timezone Asia/Shanghai,否则时间戳对不上北京时间。

3. 定时任务专用:crontab 里 % 要加反斜杠转义,写成:

0 2 * * * tar -zcf /backup/db_\$(date +\%Y\%m\%d\%H\%M\%S).sql.gz /var/lib/mysql

七、真实场景:日志切割脚本

需求:/var/log/nginx/access.log 每天暴涨,想按小时切走。

#!/bin/bash

LOGDIR=/var/log/nginx

SUFFIX=$(date +%Y%m%d%H)

mv $LOGDIR/access.log $LOGDIR/access.${SUFFIX}.log

systemctl reload nginx

扔进 /etc/cron.hourly,日志乖乖按小时带戳归档,运维睡个安稳觉。

八、备份目录清理:只留最近七天

时间戳文件多了也占盘,加一行清理:

find /data/backup -name "www_*.tar.gz" -mtime +7 -delete

跑备份脚本的尾巴顺手带上,磁盘永远不满。

九、快速检查:你的脚本合格吗

1. 执行完 ls 看文件名,带不带时间戳一眼可见。

2. 多跑几次,确认旧文件不被覆盖。

3. 把系统时间往前调一分钟再跑,观察新文件时间是否对应变化,验证 date 命令有效性。

照上面做,CentOS shell 获取当前时间并写入文件名这件事,基本就焊死了。**复制粘贴不怕忘,脚本跑烂不再慌。**

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/41702.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~