backup-strategy
9
总安装量
4
周安装量
#32241
全站排名
安装命令
npx skills add https://github.com/chaterm/terminal-skills --skill backup-strategy
Agent 安装分布
claude-code
4
opencode
3
windsurf
2
codex
2
github-copilot
2
antigravity
2
Skill 文档
å¤ä»½çç¥è®¾è®¡
æ¦è¿°
3-2-1 çç¥ãå¤ä»½éªè¯ãä¿ççç¥è®¾è®¡æè½ã
3-2-1 å¤ä»½çç¥
æ ¸å¿åå
3 - è³å°ä¿ç 3 ä»½æ°æ®å¯æ¬
2 - åå¨å¨ 2 ç§ä¸åä»è´¨ä¸
1 - è³å° 1 份å¼å°åå¨
æ©å± 3-2-1-1-0ï¼
3 份坿¬
2 ç§ä»è´¨
1 份å¼å°
1 份离线/ä¸å¯å
0 个é误ï¼éªè¯éè¿ï¼
宿½ç¤ºä¾
# æ¬å°å¤ä»½ï¼å¯æ¬ 1ï¼
tar -czvf /backup/local/data_$(date +%Y%m%d).tar.gz /data
# NAS å¤ä»½ï¼å¯æ¬ 2ï¼ä¸åä»è´¨ï¼
rsync -avz /backup/local/ nas:/backup/
# äºå¤ä»½ï¼å¯æ¬ 3ï¼å¼å°ï¼
aws s3 sync /backup/local/ s3://backup-bucket/
å¤ä»½ç±»å
宿´å¤ä»½
# æ¯å¨å®æ´å¤ä»½
tar -czvf /backup/full_$(date +%Y%m%d).tar.gz /data
å¢éå¤ä»½
# åºäºæ¶é´æ³
tar -czvf /backup/incr_$(date +%Y%m%d).tar.gz \
--newer-mtime="1 day ago" /data
# åºäºå¿«ç
§æä»¶
tar -czvf /backup/incr.tar.gz -g /backup/snapshot.snar /data
å·®å¼å¤ä»½
# åºäºå®æ´å¤ä»½æ¶é´
tar -czvf /backup/diff_$(date +%Y%m%d).tar.gz \
--newer-mtime="$(cat /backup/last_full_date)" /data
ä¿ççç¥
GFS çç¥
# Grandfather-Father-Son
# æ¥å¤ä»½ï¼ä¿ç 7 天
# å¨å¤ä»½ï¼ä¿ç 4 å¨
# æå¤ä»½ï¼ä¿ç 12 个æ
# å¹´å¤ä»½ï¼ä¿ç 7 å¹´
#!/bin/bash
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)
DOW=$(date +%u) # 1-7
DOM=$(date +%d) # 01-31
# æ¥å¤ä»½
tar -czvf ${BACKUP_DIR}/daily/backup_${DATE}.tar.gz /data
# å¨å¤ä»½ï¼å¨æ¥ï¼
if [ "$DOW" -eq 7 ]; then
cp ${BACKUP_DIR}/daily/backup_${DATE}.tar.gz ${BACKUP_DIR}/weekly/
fi
# æå¤ä»½ï¼1å·ï¼
if [ "$DOM" -eq "01" ]; then
cp ${BACKUP_DIR}/daily/backup_${DATE}.tar.gz ${BACKUP_DIR}/monthly/
fi
# æ¸
ç
find ${BACKUP_DIR}/daily -mtime +7 -delete
find ${BACKUP_DIR}/weekly -mtime +28 -delete
find ${BACKUP_DIR}/monthly -mtime +365 -delete
æ»å¨ä¿ç
#!/bin/bash
# ä¿çæè¿ N 个å¤ä»½
BACKUP_DIR="/backup"
KEEP=10
ls -1t ${BACKUP_DIR}/*.tar.gz | tail -n +$((KEEP+1)) | xargs -r rm
å¤ä»½éªè¯
宿´æ§æ£æ¥
# æ ¡éªåéªè¯
md5sum backup.tar.gz > backup.md5
md5sum -c backup.md5
# tar æµè¯
tar -tzvf backup.tar.gz > /dev/null
# gzip æµè¯
gzip -t backup.tar.gz
æ¢å¤æµè¯
#!/bin/bash
# 宿æ¢å¤æµè¯
TEST_DIR="/tmp/restore_test"
mkdir -p $TEST_DIR
# è§£åæµè¯
tar -xzvf /backup/latest.tar.gz -C $TEST_DIR
# éªè¯æä»¶æ°é
ORIG_COUNT=$(find /data -type f | wc -l)
REST_COUNT=$(find $TEST_DIR -type f | wc -l)
if [ "$ORIG_COUNT" -eq "$REST_COUNT" ]; then
echo "éªè¯éè¿"
else
echo "éªè¯å¤±è´¥ï¼æä»¶æ°éä¸å¹é
"
fi
rm -rf $TEST_DIR
常è§åºæ¯
åºæ¯ 1ï¼ä¼ä¸å¤ä»½æ¹æ¡
#!/bin/bash
# 综åå¤ä»½èæ¬
CONFIG="/etc/backup/config"
LOG="/var/log/backup.log"
log() { echo "$(date '+%Y-%m-%d %H:%M:%S') $1" >> $LOG; }
# æ°æ®åºå¤ä»½
log "å¼å§æ°æ®åºå¤ä»½"
mysqldump --all-databases | gzip > /backup/db_$(date +%Y%m%d).sql.gz
# æä»¶å¤ä»½
log "å¼å§æä»¶å¤ä»½"
tar -czvf /backup/files_$(date +%Y%m%d).tar.gz /data
# åæ¥å° NAS
log "åæ¥å° NAS"
rsync -avz /backup/ nas:/backup/
# ä¸ä¼ å°äº
log "ä¸ä¼ å°äºåå¨"
aws s3 sync /backup/ s3://backup-bucket/
# éªè¯
log "éªè¯å¤ä»½"
gzip -t /backup/*.gz
# æ¸
ç
log "æ¸
çæ§å¤ä»½"
find /backup -mtime +7 -delete
log "å¤ä»½å®æ"
åºæ¯ 2ï¼å¤ä»½çæ§
#!/bin/bash
# æ£æ¥å¤ä»½ç¶æ
BACKUP_DIR="/backup"
MAX_AGE=86400 # 24å°æ¶
LATEST=$(ls -1t ${BACKUP_DIR}/*.tar.gz 2>/dev/null | head -1)
if [ -z "$LATEST" ]; then
echo "CRITICAL: æ å¤ä»½æä»¶"
exit 2
fi
AGE=$(($(date +%s) - $(stat -c %Y "$LATEST")))
if [ $AGE -gt $MAX_AGE ]; then
echo "WARNING: å¤ä»½è¶
è¿ 24 å°æ¶"
exit 1
fi
echo "OK: ææ°å¤ä»½ $(basename $LATEST)"
exit 0
çç¥å¯¹æ¯
| çç¥ | åå¨ç©ºé´ | æ¢å¤é度 | å¤æåº¦ |
|---|---|---|---|
| 宿´ | é« | å¿« | ä½ |
| å¢é | ä½ | æ ¢ | é« |
| å·®å¼ | ä¸ | ä¸ | ä¸ |
| GFS | ä¸ | ä¸ | ä¸ |
æä½³å®è·µ
1. èªå¨åå¤ä»½ï¼é¿å
äººå·¥éæ¼
2. 宿éªè¯å¤ä»½å¯æ¢å¤æ§
3. å å¯æææ°æ®å¤ä»½
4. çæ§å¤ä»½ç¶æå空é´
5. ææ¡£åæ¢å¤æµç¨
6. 宿æ¼ç»æ¢å¤è¿ç¨