温馨提示×

如何脚本化centos extract

小樊
36
2026-10-03 02:38:22
栏目: 智能运维

在 CentOS(以及大多数 Linux 发行版)中,“extract” 通常指解压文件(如 .tar.gz、.zip、.tar.xz 等)。下面我从脚本化思路和常见示例两方面说明,如何在 CentOS 上用脚本自动解压文件。


一、基础解压命令(先了解)

文件类型 命令
.tar tar -xvf file.tar
.tar.gz / .tgz tar -xzvf file.tar.gz
.tar.xz tar -xJvf file.tar.xz
.tar.bz2 tar -xjvf file.tar.bz2
.zip unzip file.zip
.rar unrar x file.rar

CentOS 默认通常已安装 tar,但 unzip / unrar 可能需要安装:

yum install -y unzip

二、通用解压脚本(推荐)

1️⃣ 自动识别文件类型并解压(最常用)

#!/bin/bash

FILE="$1"

if [ -z "$FILE" ]; then
    echo "用法: $0 文件名"
    exit 1
fi

if [ ! -f "$FILE" ]; then
    echo "文件不存在: $FILE"
    exit 1
fi

case "$FILE" in
    *.tar)
        tar -xvf "$FILE"
        ;;
    *.tar.gz|*.tgz)
        tar -xzvf "$FILE"
        ;;
    *.tar.xz)
        tar -xJvf "$FILE"
        ;;
    *.tar.bz2)
        tar -xjvf "$FILE"
        ;;
    *.zip)
        unzip "$FILE"
        ;;
    *.rar)
        unrar x "$FILE"
        ;;
    *)
        echo "不支持的文件类型: $FILE"
        exit 1
        ;;
esac

使用:

chmod +x extract.sh
./extract.sh test.tar.gz

三、批量解压脚本(目录中所有压缩包)

#!/bin/bash

for f in *.tar.gz *.zip; do
    [ -e "$f" ] || continue
    echo "解压: $f"
    case "$f" in
        *.tar.gz) tar -xzvf "$f" ;;
        *.zip)    unzip "$f" ;;
    esac
done

四、解压到指定目录(脚本化常用)

#!/bin/bash

FILE="$1"
DEST="$2"

mkdir -p "$DEST"

case "$FILE" in
    *.tar.gz)
        tar -xzvf "$FILE" -C "$DEST"
        ;;
    *.zip)
        unzip "$FILE" -d "$DEST"
        ;;
esac

五、在 Ansible / CI 中的“脚本化”

如果你说的 CentOS extract 是指 自动化运维,例如:

Ansible 示例

- name: Extract tar.gz
  unarchive:
    src: /tmp/app.tar.gz
    dest: /opt/app
    remote_src: yes

六、如果你是问“CentOS 系统安装后的 extract”

例如:

  • 从 ISO 提取文件
  • 从 RPM 提取内容

从 RPM 提取文件

rpm2cpio package.rpm | cpio -idmv

七、总结

✅ 脚本化 extract 的核心步骤:

  1. 判断文件是否存在
  2. 根据后缀选择解压命令
  3. 可选:指定解压目录
  4. 可批量 / 可自动化

如果你能补充:

  • 是 哪种文件
  • 是 交互脚本 / 定时任务 / Ansible / Docker

我可以给你更精准的脚本。

0 踩