Utoljára aktív 1 month ago

за Windows 11 с WSL2

urocibg gist felülvizsgálása 1 month ago. Revízióhoz ugrás

Nincsenek változtatások

urocibg gist felülvizsgálása 1 month ago. Revízióhoz ugrás

Nincsenek változtatások

urocibg gist felülvizsgálása 1 month ago. Revízióhoz ugrás

1 file changed, 117 insertions

backup_sync_pve1.sh(fájl létrehozva)

@@ -0,0 +1,117 @@
1 + #!/bin/bash
2 +
3 + # Конфигурационен файл за първи Proxmox
4 + CONFIG_FILE="$(dirname "$0")/backup_config_pve1.conf"
5 + LOG_FILE="$(dirname "$0")/backup_sync_pve1.log"
6 + DOWNLOADED_FILE="$(dirname "$0")/.downloaded_backups_pve1"
7 +
8 + # Функция за логване
9 + log() {
10 + echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
11 + }
12 +
13 + # Проверка дали конфигурационният файл съществува
14 + if [[ ! -f "$CONFIG_FILE" ]]; then
15 + log "ERROR: Конфигурационният файл $CONFIG_FILE не съществува!"
16 + cat > "$CONFIG_FILE" << 'EOF'
17 + # Конфигурация за Proxmox backup sync - PVE1
18 + PROXMOX_HOST=10.110.110.68
19 + PROXMOX_USER=root
20 + REMOTE_BACKUP_PATH=/backup512/dump
21 + LOCAL_BACKUP_PATH=/mnt/d/backup_proxmox_pve1
22 +
23 + # LXC контейнери за синхронизиране (разделени със запетая)
24 + LXC_IDS=111,114
25 +
26 + # SSH опции
27 + SSH_OPTIONS="-o ConnectTimeout=30 -o ServerAliveInterval=60"
28 +
29 + # Максимален брой дни за задържане на локални бекъпи (0 = безкрайно)
30 + KEEP_DAYS=30
31 + EOF
32 + log "Създаден е примерен конфигурационен файл: $CONFIG_FILE"
33 + log "Моля, редактирайте го според вашите нужди и стартирайте отново скрипта."
34 + exit 1
35 + fi
36 +
37 + # Зареждане на конфигурацията
38 + source "$CONFIG_FILE"
39 +
40 + # Създаване на локална директория ако не съществува
41 + mkdir -p "$LOCAL_BACKUP_PATH"
42 +
43 + # Създаване на файл за проследяване на свалените бекъпи
44 + touch "$DOWNLOADED_FILE"
45 +
46 + log "Започвам проверка за нови бекъпи от $PROXMOX_HOST..."
47 + log "Наблюдавани LXC контейнери: $LXC_IDS"
48 +
49 + # Функция за получаване на списък с отдалечени бекъпи
50 + get_remote_backups() {
51 + local lxc_id=$1
52 + ssh $SSH_OPTIONS "${PROXMOX_USER}@${PROXMOX_HOST}" \
53 + "find ${REMOTE_BACKUP_PATH} -name 'vzdump-lxc-${lxc_id}-*.tar.zst' -type f -printf '%f\n'" 2>/dev/null
54 + }
55 +
56 + # Функция за проверка дали бекъп е вече свален
57 + is_downloaded() {
58 + local backup_name=$1
59 + grep -Fxq "$backup_name" "$DOWNLOADED_FILE"
60 + }
61 +
62 + # Функция за маркиране на бекъп като свален
63 + mark_as_downloaded() {
64 + local backup_name=$1
65 + echo "$backup_name" >> "$DOWNLOADED_FILE"
66 + }
67 +
68 + # Функция за изтриване на стари локални бекъпи
69 + cleanup_old_backups() {
70 + if [[ "$KEEP_DAYS" -gt 0 ]]; then
71 + log "Изтривам локални бекъпи по-стари от $KEEP_DAYS дни..."
72 + find "$LOCAL_BACKUP_PATH" -name "vzdump-lxc-*.tar.zst" -type f -mtime +$KEEP_DAYS -delete
73 + fi
74 + }
75 +
76 + # Главен цикъл за всеки LXC контейнер
77 + IFS=',' read -ra LXC_ARRAY <<< "$LXC_IDS"
78 + for lxc_id in "${LXC_ARRAY[@]}"; do
79 + lxc_id=$(echo "$lxc_id" | xargs) # Премахване на интервали
80 + log "Проверявам за нови бекъпи на LXC $lxc_id..."
81 +
82 + # Получаване на списък с отдалечени бекъпи
83 + remote_backups=$(get_remote_backups "$lxc_id")
84 +
85 + if [[ -z "$remote_backups" ]]; then
86 + log "Няма намерени бекъпи за LXC $lxc_id"
87 + continue
88 + fi
89 +
90 + # Проверка за всеки бекъп
91 + while IFS= read -r backup_file; do
92 + [[ -z "$backup_file" ]] && continue
93 +
94 + if ! is_downloaded "$backup_file"; then
95 + log "Намерен нов бекъп: $backup_file"
96 + log "Започвам сваляне..."
97 +
98 + # Изпълнение на rsync
99 + if rsync -avz --partial --progress -e "ssh $SSH_OPTIONS" \
100 + "${PROXMOX_USER}@${PROXMOX_HOST}:${REMOTE_BACKUP_PATH}/${backup_file}" \
101 + "${LOCAL_BACKUP_PATH}/"; then
102 +
103 + log "Успешно свален: $backup_file"
104 + mark_as_downloaded "$backup_file"
105 + else
106 + log "ERROR: Грешка при сваляне на $backup_file"
107 + fi
108 + else
109 + log "Бекъп $backup_file вече е свален, прескачам..."
110 + fi
111 + done <<< "$remote_backups"
112 + done
113 +
114 + # Почистване на стари бекъпи
115 + cleanup_old_backups
116 +
117 + log "Завършена проверка за нови бекъпи от $PROXMOX_HOST."
Újabb Régebbi