update_0.3
This commit is contained in:
+38
-17
@@ -1,33 +1,54 @@
|
||||
#!/bin/sh
|
||||
|
||||
OUT_FILE="$1"
|
||||
LIST_FILE="$2"
|
||||
OPKG_SCR="$3"
|
||||
CONFIGS="$4"
|
||||
LOCAL_FILE="$1"
|
||||
LOCAL_LST="$2"
|
||||
SCR_OPKG="$3"
|
||||
C_LIST="$4"
|
||||
H_REPLACE="$5"
|
||||
C_EXCLUDE="$6"
|
||||
|
||||
[ -z "$OUT_FILE" ] || [ -z "$LIST_FILE" ] || [ -z "$OPKG_SCR" ] || [ -z "$CONFIGS" ] || [ -z "H_REPLACE" ] && echo "Missing params!" && exit 1
|
||||
[ -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"
|
||||
COUNT=0
|
||||
|
||||
echo "Writing package list..."
|
||||
$OPKG_SCR write "$LIST_FILE" "$H_REPLACE"
|
||||
$SCR_OPKG write "$LOCAL_LST" "$H_REPLACE"
|
||||
|
||||
echo "Collecting files..."
|
||||
for p in $CONFIGS; do
|
||||
echo "Included:"
|
||||
for p in $C_LIST; do
|
||||
[ -z "$p" ] && continue
|
||||
if [ -e "$p" ]; then
|
||||
mkdir -p "$TMP_DIR$(dirname "$p")"
|
||||
cp -a "$p" "$TMP_DIR$p"
|
||||
cp -aP "$p" "$TMP_DIR$p"
|
||||
echo " [+] $p"
|
||||
COUNT=$((COUNT + 1))
|
||||
else
|
||||
echo " [-] $p (not found)"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Creating archive..."
|
||||
tar -czf "$OUT_FILE" -C "$TMP_DIR" .
|
||||
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"
|
||||
echo "Total $COUNT config paths saved to $OUT_FILE."
|
||||
|
||||
Reference in New Issue
Block a user