在 Synology nas 上递归提取 zip 存档(概念)

问题描述 投票:0回答:1

我正在使用 Synology NAS。我有一个备份 ZIP 文件(一个包含另一个 ZIP 文件的 ZIP 文件)的概念。该文件很大,所以我想编写解压缩脚本,因此首先提取外部 zip,然后自动提取内部 zip,无需干预。通常的解压缩实用程序不适用于 Synology NAS。

我需要使用 Bash 脚本自动执行提取这些嵌套 ZIP 文件的过程。我意识到我的 NAS 上安装了 7z,但不确定如何有效处理嵌套存档。如何使用 7z 递归提取所有嵌套 ZIP 文件?

bash recursion compression synology notion
1个回答
0
投票

要在 Synology NAS 上使用 7z 处理嵌套 ZIP 文件,您可以使用递归 Bash 脚本。这是一个脚本,它将提取初始 ZIP 文件,然后递归处理在提取的目录中找到的任何其他 ZIP 文件:

#!/bin/bash

function extract_zip {
    local file=$1
    local outdir=$2
    7z x "$file" -o"$outdir"
    local files=($(find "$outdir" -type f -name '*.zip'))
    for f in "${files[@]}"; do
        local newdir="${f%.*}"
        mkdir -p "$newdir"
        extract_zip "$f" "$newdir"
        rm "$f"  # Optional: remove the nested ZIP after extraction
    done
}

initial_zip="$1"
output_dir="${initial_zip%.*}_extracted"
mkdir -p "$output_dir"
extract_zip "$initial_zip" "$output_dir"

使用方法

  • 将此脚本保存到文件中,例如 extract_nested.sh。
  • 使用 chmod +x extract_nested.sh 使脚本可执行。
  • 通过传递初始 ZIP 文件作为参数来执行脚本: 重击

./extract_nested.sh path_to_your_zip_file.zip

脚本说明

函数 extract_zip:该函数接受一个 ZIP 文件和一个输出目录。它使用 7z 将 ZIP 文件解压到指定目录。然后,它在输出目录中搜索任何其他 ZIP 文件,并通过调用自身递归地处理每个文件。

  • 初始设置:脚本通过创建输出目录并使用初始 ZIP 文件开始提取来进行初始化。

此方法可确保处理所有嵌套的 ZIP 文件,并维护输出的目录结构以便于导航。

© www.soinside.com 2019 - 2024. All rights reserved.