55 lines
1.2 KiB
Bash
Executable File
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"
|