47 lines
1017 B
Bash
Executable File
47 lines
1017 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
if [ "$#" -ne 2 ]; then
|
|
echo "Usage:"
|
|
echo " $0 <source> <backup-directory>"
|
|
exit 1
|
|
fi
|
|
|
|
SOURCE="$(cd "$1" && pwd)"
|
|
BACKUP_ROOT="$2"
|
|
NAME="$(basename "$SOURCE")"
|
|
STAMP="$(date +"%Y%m%d-%H%M%S")"
|
|
|
|
WORK_DIR="$BACKUP_ROOT/${NAME}-${STAMP}"
|
|
ZIP_FILE="$BACKUP_ROOT/${NAME}-${STAMP}.zip"
|
|
|
|
mkdir -p "$BACKUP_ROOT"
|
|
|
|
echo "Copying clean source..."
|
|
rsync -a \
|
|
--delete \
|
|
--exclude=".git/" \
|
|
--exclude="node_modules/" \
|
|
--exclude="storage/" \
|
|
--exclude="bootstrap/cache/" \
|
|
--exclude="provision/" \
|
|
"$SOURCE/" \
|
|
"$WORK_DIR/"
|
|
# --exclude="vendor/" \
|
|
echo "Recreating required empty Laravel directories..."
|
|
mkdir -p "$WORK_DIR/storage" "$WORK_DIR/bootstrap/cache"
|
|
touch "$WORK_DIR/storage/.gitkeep" "$WORK_DIR/bootstrap/cache/.gitkeep"
|
|
|
|
echo "Creating zip..."
|
|
(
|
|
cd "$BACKUP_ROOT"
|
|
zip -qr "$(basename "$ZIP_FILE")" "$(basename "$WORK_DIR")"
|
|
)
|
|
|
|
echo "Deleting temporary backup folder..."
|
|
rm -rf "$WORK_DIR"
|
|
|
|
echo "Done:"
|
|
echo "$ZIP_FILE"
|