Files
2026-04-13 15:07:22 +04:00

55 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
LOCAL_FILE="$1"
LOCAL_LST="$2"
SCR_APK="$3"
C_LIST="$4"
H_REPLACE="$5"
C_EXCLUDE="$6"
[ -z "$LOCAL_FILE" ] || [ -z "$LOCAL_LST" ] || [ -z "$C_LIST" ] && echo "Missing params!" && exit 1
TMP_DIR="/tmp/backup_stack"
rm -rf "$TMP_DIR" && mkdir -p "$TMP_DIR"
$SCR_APK write "$LOCAL_LST" "$H_REPLACE"
echo "Included:"
for p in $C_LIST; do
[ -z "$p" ] && continue
if [ -e "$p" ]; then
mkdir -p "$TMP_DIR$(dirname "$p")"
cp -aP "$p" "$TMP_DIR$p"
echo " [+] $p"
fi
done
echo "Excluded:"
if [ -n "$C_EXCLUDE" ]; then
for item in $C_EXCLUDE; do
[ -z "$item" ] && continue
TARGET_REMOVE=$(echo "$TMP_DIR/$item" | sed 's|//*|/|g')
if [ -e "$TARGET_REMOVE" ]; then
rm -rf "$TARGET_REMOVE"
echo " [-] $item"
else
echo " [!] Not found in backup: $item"
fi
done
fi
printf "Creating backup... "
TAR_ERR=$(tar -cz -f "$LOCAL_FILE" -C "$TMP_DIR" . 2>&1)
if [ $? -eq 0 ] && [ -f "$LOCAL_FILE" ]; then
echo "OK"
echo " [+] Archive size: $(du -sh "$LOCAL_FILE" | awk '{print $1}')"
else
echo "FAILED"
[ -n "$TAR_ERR" ] && echo "[!] Tar error: $TAR_ERR"
rm -rf "$TMP_DIR"
exit 1
fi
rm -rf "$TMP_DIR"