Files
2026-05-31 14:34:25 +07:00

47 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
INPUT_DIR="${1:-.}"
OUTPUT_DIR="${2:-.}"
if [ -z "$1" ]; then
echo "Usage: $0 <input_dir> [output_dir]"
echo "Concatenates all .tar.gz parts and extracts them"
exit 1
fi
PREFIX=""
for f in "${INPUT_DIR}"/**.tar.gz; do
if [ -f "$f" ]; then
BASE=$(basename "$f")
# Убираем числовой суффикс для определения префикса
PREFIX=$(echo "$BASE" | sed -E 's/\.[0-9]+$//')
if [ -n "$PREFIX" ]; then
break
fi
fi
done
COMBINED="/tmp/${PREFIX}_combined.tar.gz"
echo "Combining parts into ${COMBINED}..."
# Собираем в правильном порядке: сначала базовый файл (без суффикса), затем части по порядку
cat "${INPUT_DIR}/${PREFIX}" > "$COMBINED" 2>/dev/null
for f in $(ls -v "${INPUT_DIR}/${PREFIX}".* 2>/dev/null); do
BASE=$(basename "$f")
if [[ "$BASE" =~ \.[0-9]+$ ]]; then
echo "Appending ${BASE}..."
cat "$f" >> "$COMBINED"
fi
done
echo "Extracting ${COMBINED} to ${OUTPUT_DIR}..."
tar -xzf "$COMBINED" -C "$OUTPUT_DIR"
if [ $? -eq 0 ]; then
echo "Extraction complete."
rm -f "$COMBINED"
else
echo "Extraction failed. Combined file kept at ${COMBINED}"
exit 1
fi