温馨提示×

centos extract如何自动化

小樊
43
2026-09-24 07:38:15
栏目: 智能运维

在 CentOS 里你说的 “extract” 一般指的是自动解压文件(tar / zip / rar 等)。下面按常见场景给你几种自动化方案,你可以直接挑用。


一、Shell 脚本自动解压(最常用)

1️⃣ 自动解压当前目录所有压缩包

#!/bin/bash
for f in *.tar.gz *.tgz *.tar.bz2 *.zip *.rar; do
    case "$f" in
        *.tar.gz|*.tgz) tar -xzf "$f" ;;
        *.tar.bz2) tar -xjf "$f" ;;
        *.zip) unzip "$f" ;;
        *.rar) unrar x "$f" ;;
    esac
done

保存为 extract.sh

chmod +x extract.sh
./extract.sh

二、根据文件类型自动解压(函数方式)

把下面内容加到 ~/.bashrc

extract() {
    if [ -f "$1" ]; then
        case "$1" in
            *.tar.gz|*.tgz) tar -xzf "$1" ;;
            *.tar.bz2) tar -xjf "$1" ;;
            *.tar.xz) tar -xJf "$1" ;;
            *.zip) unzip "$1" ;;
            *.rar) unrar x "$1" ;;
            *.7z) 7z x "$1" ;;
            *) echo "不支持的格式: $1" ;;
        esac
    else
        echo "$1 不是文件"
    fi
}

使用:

extract xxx.tar.gz

三、定时自动解压(cron)

比如每天凌晨解压 /data/inbox 里的文件:

crontab -e

添加:

0 0 * * * /data/extract.sh >> /var/log/extract.log 2>&1

四、监控目录自动解压(inotify)

适合文件一进来就解压

安装

yum install inotify-tools -y

脚本

#!/bin/bash
DIR=/data/inbox

inotifywait -m -e close_write --format '%f' "$DIR" | while read file
do
    case "$file" in
        *.tar.gz|*.tgz) tar -xzf "$DIR/$file" -C "$DIR" ;;
        *.zip) unzip "$DIR/$file" -d "$DIR" ;;
    esac
done

五、系统工具(一行解压)

CentOS 也可安装:

yum install p7zip unrar -y

六、常见坑提醒

  • unrar 在默认源里可能没有,可用 EPEL
yum install epel-release -y
  • 解压中文文件名建议加:
export LANG=zh_CN.UTF-8

如果你能说明:

  • 是 tar / zip / rar 哪一种
  • 是 手动 / 定时 / 实时监控
  • 解压后是否要 移动或删除原文件

我可以帮你写一个完全贴合你场景的自动化脚本。

0 踩