55 lines
2.4 KiB
Bash
55 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
# Run on the provisioning HOST (root) to install PiShrink and dependencies.
|
|
# Enables shrinking backups in flash-emmc-on-connect.sh when SHRINK_BACKUP=1.
|
|
# PiShrink: https://github.com/Drewsif/PiShrink
|
|
#
|
|
# Offline install (when host has no internet):
|
|
# 1. On a machine with internet: curl -Lo pishrink.sh https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
|
|
# 2. scp pishrink.sh root@HOST:/tmp/
|
|
# 3. On host: bash install-pishrink-on-host.sh /tmp/pishrink.sh
|
|
#
|
|
# Optional: PISHRINK_URL=... or pass path to local pishrink.sh as first argument.
|
|
|
|
set -e
|
|
PISHRINK_URL="${PISHRINK_URL:-https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh}"
|
|
LOCAL_PISHRINK="$1"
|
|
|
|
echo "Installing PiShrink dependencies (parted, e2fsprogs, xz-utils, ...)..."
|
|
if apt-get update 2>/dev/null && apt-get install -y wget parted gzip pigz xz-utils udev e2fsprogs 2>/dev/null; then
|
|
echo "Dependencies installed."
|
|
else
|
|
echo "Warning: apt install failed (e.g. host has no internet). Skipping packages."
|
|
echo "PiShrink needs: parted, e2fsprogs; optional: gzip/pigz, xz-utils. Install them manually if missing."
|
|
for cmd in parted resize2fs; do
|
|
if ! command -v "$cmd" &>/dev/null; then
|
|
echo " Missing: $cmd — install with apt when the host has network, or use a local mirror."
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [[ -n "$LOCAL_PISHRINK" && -f "$LOCAL_PISHRINK" ]]; then
|
|
echo "Using local PiShrink script: $LOCAL_PISHRINK"
|
|
cp "$LOCAL_PISHRINK" /usr/local/bin/pishrink.sh
|
|
chmod +x /usr/local/bin/pishrink.sh
|
|
echo "PiShrink installed at /usr/local/bin/pishrink.sh"
|
|
elif command -v wget &>/dev/null && wget -q -O /usr/local/bin/pishrink.sh "$PISHRINK_URL" 2>/dev/null; then
|
|
chmod +x /usr/local/bin/pishrink.sh
|
|
echo "PiShrink installed at /usr/local/bin/pishrink.sh"
|
|
else
|
|
echo "Could not download PiShrink (no wget or no network)."
|
|
echo ""
|
|
echo "Offline install:"
|
|
echo " 1. On a machine WITH internet run:"
|
|
echo " curl -Lo pishrink.sh $PISHRINK_URL"
|
|
echo " 2. Copy to host:"
|
|
echo " scp pishrink.sh root@YOUR_HOST:/tmp/"
|
|
echo " 3. On the host run:"
|
|
echo " bash install-pishrink-on-host.sh /tmp/pishrink.sh"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "To shrink backups automatically, add to /opt/cm4-provisioning/env:"
|
|
echo " SHRINK_BACKUP=1"
|
|
echo " # optional: PISHRINK_COMPRESS=gz or PISHRINK_COMPRESS=xz"
|