当前位置: 首页 > news >正文

Orange的运维学习日记--19.Linux文件归档和备份

Orange的运维学习日记–19.Linux文件归档和备份

文章目录

  • Orange的运维学习日记--19.Linux文件归档和备份
    • `tar` 简介
    • `tar` 命令概览
    • `tar` 命令语法示例
    • 创建 `tar` 包
    • 查看归档内容
    • 提取文件
      • 提取全部内容
      • 提取部分文件
    • 在归档中追加文件
    • 从归档中删除文件
    • `tar` 包压缩管理
      • gzip 压缩
      • bzip2 压缩
      • xz 压缩
    • 定时自动脚本
    • `tar` 补充
    • `tar` 补充

tar 简介

归档和压缩文件对于创建完整备份和通过网络传输数据具有重要作用

最常用的归档工具之一是tar命令

tar 可以将大量文件打包为一个存档文件,也可结合 gzipbzip2xz 进行压缩


tar 命令概览

选项功能
-c创建新归档
-t列出归档内容
-x从归档提取文件
-f archive指定归档文件名
-r向已有归档追加文件
–delete从归档中删除文件
-z使用 gzip 压缩或解压
-j使用 bzip2 压缩或解压
-J使用 xz 压缩或解压

在这里插入图片描述


tar 命令语法示例

tar [选项组合] archive_name file_or_directory...

示例:创建名为 backup.tar 的归档

tar -cf backup.tar /path/to/data

创建 tar

非 root 用户打包时可能因权限不足而失败

# 普通用户尝试打包 /etc 目录时部分文件权限不足
tar -cf etc.tar /etc

获得 root 权限后可完整打包

sudo tar -cf etc.tar /etc

为避免同名覆盖,可附加日期后缀

tar -cf etc-$(date +%Y%m%d).tar /etc
ls -l etc-*.tar

查看归档内容

使用 -t 选项列出归档中的所有成员

tar -tf etc-20240726.tar

通过管道和 grep 过滤特定文件

tar -tf etc-20240726.tar | grep etc/host

提取文件

提取全部内容

tar -xf etc-20240726.tar

提取部分文件

列出所需文件

tar -tf etc-20240726.tar | grep etc/host

指定列表提取

tar -xf etc-20240726.tar etc/host.conf etc/hosts etc/hostname

在归档中追加文件

使用 -r 选项向已有归档追加新文件

tar -r -f etc-20240726.tar /usr/share/doc/at/timespec
tar -tf etc-20240726.tar | grep timespec

从归档中删除文件

使用 --delete 选项从归档中移除指定成员

tar --delete -f etc-20240726.tar usr/share/doc/at/timespec
tar -tf etc-20240726.tar | grep timespec

tar 包压缩管理

tar 本身不压缩,仅支持打包
结合外部压缩工具可实现归档压缩

压缩工具选项后缀特点
gzip-z.tar.gz / .tgz压缩最快、最广泛
bzip2-j.tar.bz2压缩比更高、速度稍慢
xz-J.tar.xz最新压缩比最佳、耗时

压缩前需确保工具已安装

sudo yum install gzip bzip2 xz

gzip 压缩

time tar -czf etc.tar.gz /etc

bzip2 压缩

time tar -cjf etc.tar.bz2 /etc

xz 压缩

time tar -cJf etc.tar.xz /etc

查看压缩结果

ls -lh etc.tar.*

解压或查看压缩归档无需额外选项

tar -tf etc.tar.gz

定时自动脚本

下面示例脚本会将指定目录打包成带时间戳的 gzip 压缩包,并清理旧文件

#!/bin/bash# 要备份的目录列表,用空格分隔
BACKUP_SRC="/etc /home /var/www"# 备份存放路径
BACKUP_DEST="/backup"# 日期格式,用于生成唯一文件名
DATE=$(date +'%Y%m%d_%H%M')# 最终归档文件名
ARCHIVE_NAME="backup_${DATE}.tar.gz"# 确保备份目录存在
mkdir -p "${BACKUP_DEST}"# 创建 gzip 压缩的 tar 包
tar -czf "${BACKUP_DEST}/${ARCHIVE_NAME}" ${BACKUP_SRC}# 删除 7 天前的旧备份
find "${BACKUP_DEST}" -type f -name "backup_*.tar.gz" -mtime +7 -exec rm -f {} \;

使用步骤

  • 将脚本保存为 /usr/local/bin/backup.sh

  • 添加可执行权限

    chmod +x /usr/local/bin/backup.sh
    
  • 确保 /backup 目录存在且有写权限

在用户 crontab 中添加定时任务,每天凌晨 2 点自动执行

0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

定时任务说明

表达式含义
0分钟,每小时第 0 分
2小时,凌晨 2 点
*日,每日执行
*月,月份不限
*星期几,不限定

tar 补充

  • 为防止意外覆盖,可结合 -v 选项查看操作细节
  • 使用相对路径打包可避免归档中包含绝对路径前缀
  • 对超大数据量建议分卷打包(--split-size 或结合 split 命令`)
    | 2 | 小时,凌晨 2 点 |

| * | 日,每日执行 |
| * | 月,月份不限 |
| * | 星期几,不限定 |


tar 补充

  • 为防止意外覆盖,可结合 -v 选项查看操作细节
  • 使用相对路径打包可避免归档中包含绝对路径前缀
  • 对超大数据量建议分卷打包(--split-size 或结合 split 命令`)
  • 定期验证归档完整性(tar -Wmd5sum
http://www.dtcms.com/a/305789.html

相关文章:

  • 15.10 单机8卡到千卡集群!DeepSpeed实战调参手册:A100训练效率翻倍,百万成本优化实录
  • 南水北调东线工程图件 shp数据
  • 三目云台全景监控画面实现三个画面联动
  • 【图像处理】直方图均衡化c++实现
  • python基础语法2,程序控制语句(简单易上手的python语法教学)(课后练习题)
  • Python3与MySQL的PyMySQL连接与应用
  • 【Spring Boot 快速入门】四、MyBatis
  • Nestjs框架: 关于 OOP / FP / FRP 编程
  • 关于神经网络CNN的搭建过程以及图像卷积的实现过程学习
  • OSS-服务端签名Web端直传+STS获取临时凭证+POST签名v4版本开发过程中的细节
  • 修改Windows鼠标滚轮方向
  • 《计算机组成原理与汇编语言程序设计》实验报告六 存储器实验
  • mangoDB面试题及详细答案 117道(071-095)
  • LeetCode 160:相交链表
  • 使用es实现全文检索并且高亮显示
  • 利用SQL文件上传注入植入WebShell
  • Linux->动静态库
  • UniSeg3D:A Unified Framework for 3D Scene Understanding
  • 如何读懂 火山方舟 API 部分的内容
  • yolo8+阿里千问图片理解(华为简易版小艺看世界)
  • PostgreSQL 与 Oracle 数据库字段类型的详细对比
  • CSS 工作原理
  • Qt知识点2『Ubuntu24.04.2安装Qt5.12.9各种报错』
  • git报failed to connect to github.com port 443 after 21064
  • 项目文档太多、太混乱怎么解决
  • Qt 在 ARM 平台上的移植与优化
  • 中国高铁从追赶到领跑的破壁之路
  • 15.11 单卡训练770M参数模型!DeepSpeed ZeRO-3实战:RTX 4090显存直降6.8GB
  • 接口自动化测试
  • 深入剖析 StarRocks 与 Hive 的区别、使用场景及协同方案实践