feat: add OSS offsite backup gate
This commit is contained in:
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
if [[ ${EUID:-$(id -u)} -ne 0 ]]; then
|
||||
echo "Run this installer as root" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
version=2.3.0
|
||||
archive=ossutil-${version}-linux-amd64.zip
|
||||
expected_sha256=3ae4d9fc85a7a6e9f5654d1599766f1a3a42a3692870887b5ae9338d582ef65a
|
||||
download_url="https://gosspublic.alicdn.com/ossutil/v2/${version}/${archive}"
|
||||
|
||||
if command -v ossutil >/dev/null 2>&1 && [[ $(ossutil version 2>/dev/null) == "$version" ]]; then
|
||||
echo "ossutil $version already installed"
|
||||
exit 0
|
||||
fi
|
||||
install_dir=$(mktemp -d /var/tmp/ossutil-install-XXXXXX)
|
||||
case "$install_dir" in /var/tmp/ossutil-install-*) ;; *) echo "Unsafe install directory" >&2; exit 9;; esac
|
||||
trap 'rm -rf -- "$install_dir"' EXIT
|
||||
curl -fsSL --max-time 120 -o "$install_dir/$archive" "$download_url"
|
||||
printf '%s %s\n' "$expected_sha256" "$install_dir/$archive" | sha256sum -c -
|
||||
mkdir -p "$install_dir/unpacked"
|
||||
if command -v unzip >/dev/null 2>&1; then
|
||||
unzip -q "$install_dir/$archive" -d "$install_dir/unpacked"
|
||||
elif command -v python3 >/dev/null 2>&1; then
|
||||
python3 -m zipfile -e "$install_dir/$archive" "$install_dir/unpacked"
|
||||
else
|
||||
echo "Neither unzip nor python3 is available to extract ossutil" >&2
|
||||
exit 3
|
||||
fi
|
||||
binary=$(find "$install_dir/unpacked" -type f -name ossutil -print -quit)
|
||||
[[ -n "$binary" ]] || { echo "ossutil binary is missing from the verified archive" >&2; exit 4; }
|
||||
install -m 0755 "$binary" /usr/local/bin/ossutil
|
||||
[[ $(/usr/local/bin/ossutil version) == "$version" ]]
|
||||
echo "ossutil $version installed"
|
||||
Reference in New Issue
Block a user