讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux如何编写Shell备份脚本_Linux Shell备份脚本编写思路

小明姑娘_6002

小明姑娘_6002

发布时间:2026-04-06 16:09:37

|

592人浏览过

|

来源于php中文网

原创

备份脚本的核心是可预期执行、即时失败告警和明确恢复路径;需用带转义时间戳的tar命令命名,捕获stderr验证成功,安全清理旧备份,优先rsync远程传输,并必须定期手动验证恢复。

linux如何编写shell备份脚本_linux shell备份脚本编写思路

直接说结论:备份脚本的核心不是“写得多漂亮”,而是“每次执行都可预期、失败能立刻发现、恢复路径明确”。

怎么用 tar 打包 + 时间戳命名,避免覆盖

常见错误是写成 tar -czf backup.tar.gz /data,下次运行直接覆盖,根本分不清哪次是哪次。

  • 必须带时间戳:tar -czf backup_$(date +\%Y\%m\%d_\%H\%M).tar.gz /data
  • 注意 date 里的 \% 要转义,否则 shell 会报错或展开失败
  • 建议统一用 UTC 或本地时区,别混用;如果服务器跨时区部署,优先用 date -u
  • 文件名里避免空格和冒号(: 在 Windows 下非法),所以用下划线和短横线更稳妥

如何判断 tar 是否真成功,而不是“看起来没报错”

tar 即使部分文件权限不足、路径不存在,也常返回 0(成功码),但实际漏打了关键目录。

  • 加 --warning=no-file-ignored 会掩盖问题,别开
  • 真正可靠的是捕获 stderr 并检查非空:tar -czf ... 2> tar.err && [ ! -s tar.err ]
  • 更进一步:用 tar -tzf xxx.tar.gz | head -n1 验证压缩包可读且非空
  • 别只依赖 $?,tar 对很多错误静默容忍

备份前该删旧文件吗?用 find 还是 ls | head -n

留太多备份占磁盘,但删错了会导致无可用备份。重点不是“怎么删”,而是“删得安全可逆”。

  • 用 find /backup -name "backup_*.tar.gz" -mtime +7 -delete 简单但危险——-delete 不回收站,误配 -path 就完蛋
  • 推荐先 dry-run:find /backup -name "backup_*.tar.gz" -mtime +7 -print,确认后再加 -delete
  • 别用 ls | sort | head -n -3 类方案:文件名含空格或特殊字符时会崩,且 sort 默认按字典序,backup_20241201 会排在 backup_2024201 后面
  • 更稳做法:用 stat -c "%y %n" *.tar.gz | sort | head -n -3 | cut -d' ' -f4- 提取最老的几个文件名

远程备份到另一台机器,rsync 比 scp 强在哪

scp backup.tar.gz user@host:/backup/ 看似简单,但网络中断就全重传,大备份极不友好。

  • rsync -avz --partial --progress backup.tar.gz user@host:/backup/ 支持断点续传(--partial)
  • 加 --delete-after 可同步清理远端过期备份,但务必先测试,避免误删
  • 注意 rsync 默认不校验内容一致性,加 --checksum 会变慢,一般用 --size-only + 文件名时间戳组合判断更实用
  • 密钥登录必须配好,别在脚本里硬编码密码;用 ssh-agent 或 rsync --rsh="ssh -i /path/key"

真正的难点不在语法,而在于“恢复验证”——你写的脚本从没跑过恢复流程,那它就不是备份脚本,只是归档脚本。每周挑一个备份,手动 tar -xzf 到临时目录,diff -r 对比原路径,这个动作不能省。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

2500

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

249

2026.02.03

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

1118

2023.09.04

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

2591

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

805

2023.12.29

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3079

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2638

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

1448

2023.08.01

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

20

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn