הגדרת גיבויי שרת עם Restic – שירות סוהר
אנו מגדירים גיבויי שרת עם Restic — דדופליקציה ברמת בלוקים והצפנה בצד הלקוח. Restic עובד היטב עם S3, SFTP, וכל אחסון דרך rclone, ומעניק גמישות בבחירת הקצה האחורי. למהנדסים שלנו יש ניסיון של למעלה מ-5 שנים בייצור עם Restic, כולל אשכולות של 100+ שרתים. במאמר זה, נפרק כיצד Restic פותר בעיות גיבוי מרכזיות ונראה תצורה אמיתית עם systemd timer.
כיצד Restic פותר דדופליקציה והצפנה
Restic מפצל נתונים לבלוקים של 512 KB ומחשב את ה-hash שלהם. בגיבויים הבאים, רק בלוקים חדשים או שהשתנו מועברים — זה מפחית תעבורה פי 10–20 בהשוואה ל-rsync. ההצפנה מתבצעת בצד הלקוח לפני ההעלאה: סיסמה יוצרת מפתח AES-256, וגם אם האחסון נפרץ, הנתונים נשארים בלתי נגישים. עבור מסדי נתונים קריטיים (PostgreSQL, MySQL), אנו מגדירים בנוסף גיבויים דרך pg_dump לפני שליחה ל-Restic. עבור קונטיינרים של Docker, אנו משתמשים בקונטיינר sidecar עם restic, ומרכיבים volumes.
אילו קצוות אחסון תומך Restic?
| אחסון | פרוטוקול | תכונות |
|---|---|---|
| AWS S3 | s3:// | סטנדרטי, תמיכה ב-IAM role |
| MinIO | s3:// | מארח עצמי, תואם S3 API |
| שרת SFTP | sftp:// | פשוט, נדרשת רק גישת SSH |
| שרת REST | rest:// | פרוטוקול משלו, מהירות גבוהה |
| rclone | rclone:// | Google Drive, Dropbox, FTP ועוד 50+ |
אנו עוזרים לך לבחור אפשרות אחסון שמתאימה לתקציב שלך: מאחסון אובייקטים זול תואם S3 ועד SFTP ארגוני. מאגר Restic קריא ללא קשר לקצה האחורי.
דוגמת תצורה עם systemd timer
# Установка
apt-get install restic
# или
wget https://github.com/restic/restic/releases/download/v0.17.3/restic_0.17.3_linux_amd64.bz2
bunzip2 restic_*.bz2 && chmod +x restic_* && mv restic_* /usr/local/bin/restic
# Инициализация репозитория в S3
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=secret
export RESTIC_REPOSITORY=s3:https://s3.eu-central-1.amazonaws.com/my-backups/server1
export RESTIC_PASSWORD=strong-encryption-password
restic init
גיבוי ראשון:
restic backup /etc /home /var/www /var/lib/postgresql \
--exclude="/var/lib/postgresql/*/pg_wal" \
--exclude="/var/www/*/node_modules" \
--tag server1 \
--tag prodהדדופליקציה פועלת ברמת בלוקים של 512 KB הניתנים לכתובת תוכן — בגיבויים הבאים, רק בלוקים שהשתנו מועברים. עבור שרת טיפוסי, הגיבוי השני והבאים לוקחים 5–15% מהזמן של הראשון.
# Установка apt-get install restic # или wget https://github.com/restic/restic/releases/download/v0.17.3/restic_0.17.3_linux_amd64.bz2 bunzip2 restic_*.bz2 && chmod +x restic_* && mv restic_* /usr/local/bin/restic # Инициализация репозитория в S3 export AWS_ACCESS_KEY_ID=AKIA... export AWS_SECRET_ACCESS_KEY=secret export RESTIC_REPOSITORY=s3:https://s3.eu-central-1.amazonaws.com/my-backups/server1 export RESTIC_PASSWORD=strong-encryption-password restic init :
AWS_ACCESS_KEY_ID=AKIA... AWS_SECRET_ACCESS_KEY=secret RESTIC_REPOSITORY=s3:https://s3.eu-central-1.amazonaws.com/my-backups/server1 RESTIC_PASSWORD=strong-encryption-password הרשאות restic backup /etc /home /var/www /var/lib/postgresql \ --exclude="/var/lib/postgresql/*/pg_wal" \ --exclude="/var/www/*/node_modules" \ --tag server1 \ --tag prod , בעלים /etc/restic/env.
# /etc/systemd/system/restic-backup.service
[Unit]
Description=Restic backup
[Service]
Type=oneshot
EnvironmentFile=/etc/restic/env
ExecStart=restic backup /etc /home /var/www --exclude-file=/etc/restic/excludes
ExecStartPost=restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
StandardOutput=journal
StandardError=journal
# /etc/systemd/system/restic-backup.timer
[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true
[Install]
WantedBy=timers.targetAWS_ACCESS_KEY_ID=AKIA... AWS_SECRET_ACCESS_KEY=secret RESTIC_REPOSITORY=s3:https://s3.eu-central-1.amazonaws.com/my-backups/server1 RESTIC_PASSWORD=strong-encryption-password — רוטציה סטנדרטית: 7 יומיים, 4 שבועיים, 6 חודשיים snapshots. 0600 מסיר נתונים שאינם בשימוש לאחר יישום המדיניות. לניטור, ניתן להוסיף root, שחושף מדדים ל-Prometheus — זמן ביצוע, נפח נתונים, סטטוס.
למה Restic עדיף על גיבויי rsync מסורתיים
| קריטריון | Restic | rsync + cron |
|---|---|---|
| דדופליקציה | מובנית (בלוקים של 512 KB) | אין (עותקים מלאים) |
| הצפנה | בצד הלקוח (AES-256-GCM) | דורש gpg/openssl |
| גיבויים מצטברים | אוטומטי | דרך hardlink (מורכב) |
| פשטות רוטציה | פקודת # /etc/systemd/system/restic-backup.service [Unit] Description=Restic backup [Service] Type=oneshot EnvironmentFile=/etc/restic/env ExecStart=restic backup /etc /home /var/www --exclude-file=/etc/restic/excludes ExecStartPost=restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune StandardOutput=journal StandardError=journal אחת |
סקריפטים, מחיקה ידנית |
| שחזור קבצים | # /etc/systemd/system/restic-backup.timer [Timer] OnCalendar=*-*-* 02:30:00 Persistent=true [Install] WantedBy=timers.target |
--keep-daily 7 --keep-weekly 4 --keep-monthly 6 מ-snapshot |
Restic מפחית את זמן הגיבוי המשני פי 10–15 בהשוואה ל-rsync, וחיסכון בשטח אחסון מהדדופליקציה מגיע ל-80%. זה בולט במיוחד בשרתים עם מסדי נתונים או לוגים גדולים. מקרה אמיתי: לקוח עם 50 שרתים עבר מ-rsync ל-Restic וקיצץ את זמן הגיבוי מ-3 שעות ל-15 דקות.
מה כלול בהתקנת Restic סוהר
אנו מספקים שירות מקיף:
- ביקורת נתונים: קביעת מה לגבות ובאיזו תדירות
- התקנה ותצורה של Restic לפי המחסן הטכנולוגי שלך (Linux, Docker, Kubernetes)
- הגדרת systemd timer או אינטגרציה עם CI/CD קיים
- בחירה וחיבור אחסון (S3, SFTP, REST)
- מדיניות שמירה ו-forget/prune אוטומטי
- ניטור גיבויים: התראות ל-Telegram/Slack על תקלות, מדדי Prometheus
- בדיקת שחזור (restore dry-run) — אימות קריאות הנתונים
- תיעוד והדרכה למהנדסים שלך
- אחריות לשחזור נתונים — אם לא נצליח לשחזר, נתקן בחינם
צור קשר להערכת פרויקט — נציע תצורה אופטימלית ולוח זמנים.
טעויות נפוצות בהגדרת Restic
- סיסמה חלשה: השתמש בסיסמה ארוכה (20+ תווים) — היא המפתח היחיד לנתונים שלך.
- חוסר בכללי exclude: אל תכלול קבצים זמניים (node_modules, .git), אחרת המאגר יתנפח.
-
מדיניות שמירה שגויה: ללא
--prune, בלוקים שאינם בשימוש לא מוסרים, מה שמוביל לגידול באחסון. - התעלמות מניטור: גיבויים עלולים להיכשל בשקט (שגיאת גישת S3). הגדר התראות.
- חוסר בבדיקת שחזור: ודא את תהליך השחזור לפחות פעם בחודש.
למהנדסים שלנו יש ניסיון בשחזור מאות שרתים — אנו מבטיחים שהנתונים שלך יהיו זמינים בכל רגע. הזמן התקנת Restic סוהר וקבל גיבוי מאובטח ללא הפתעות.







