Initial commit: k8s cluster manifests and scripts
This commit is contained in:
35
apps/codimd/backup.sh
Executable file
35
apps/codimd/backup.sh
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
|
||||
APP_NAME="codimd"
|
||||
BACKUP_DIR="./backup"
|
||||
TIMESTAMP=$(date +%Y%m%d-%H%M)
|
||||
DB_BACKUP_FILE="${BACKUP_DIR}/${APP_NAME}-db-${TIMESTAMP}.sql.gz"
|
||||
UPLOADS_BACKUP_FILE="${BACKUP_DIR}/${APP_NAME}-uploads-${TIMESTAMP}.tar.gz"
|
||||
|
||||
# 1. 取得 Pod 名稱
|
||||
DB_POD=$(kubectl get pod -l app=codimd-db -o jsonpath="{.items[0].metadata.name}" 2>/dev/null)
|
||||
APP_POD=$(kubectl get pod -l app=codimd -o jsonpath="{.items[0].metadata.name}" 2>/dev/null)
|
||||
|
||||
mkdir -p $BACKUP_DIR
|
||||
|
||||
# --- A. 備份資料庫 ---
|
||||
echo "--- 正在備份資料庫... ---"
|
||||
if kubectl exec $DB_POD -- pg_dump -U codimd codimd | gzip > $DB_BACKUP_FILE; then
|
||||
echo "✅ 資料庫備份成功: $(basename $DB_BACKUP_FILE) ($(stat -c%s $DB_BACKUP_FILE) bytes)"
|
||||
else
|
||||
echo "❌ 資料庫備份失敗!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- B. 備份上傳檔案 (Uploads) ---
|
||||
echo "--- 正在備份上傳圖片 (Uploads)... ---"
|
||||
# 使用 tar 打包 Pod 內的 uploads 資料夾,並傳回本機
|
||||
if kubectl exec $APP_POD -- tar zcf - -C /home/hackmd/app/public uploads > $UPLOADS_BACKUP_FILE; then
|
||||
echo "✅ 圖片備份成功: $(basename $UPLOADS_BACKUP_FILE) ($(stat -c%s $UPLOADS_BACKUP_FILE) bytes)"
|
||||
else
|
||||
echo "❌ 圖片備份失敗!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "--- ✨ 備份任務完成! ---"
|
||||
Reference in New Issue
Block a user