−25%

על Windows בתשלום שנתי, עד 31.10. לחבילות

EQVPS

איך לגבות VPS עם restic (מוצפן, מחוץ לשרת)

גיבויי VPS מוצפנים וללא כפילויות עם restic: מאגר באחסון תואם S3 או בשרת אחר, טיימר systemd, מדיניות שמירה ובדיקת שחזור.

לכולם יש גיבויים עד שהם מנסים לשחזר אחד. התיקייה מתגלה כריקה, ה-cron job מת במרץ, או שהארכיון יושב על אותו דיסק שבדיוק קרס. restic פותר את רוב זה: הוא מצפין אצלכם, שומר כל פיסת מידע פעם אחת, והופך שחזור של קובץ בודד לפשוט כמו גיבוי השרת כולו.

הנה הגדרה שבאמת היינו סומכים עליה, ב-Ubuntu או ב-Debian.

1. התקינו את restic

apt update && apt install -y restic
restic self-update

חבילות ההפצה מפגרות מאחור; self-update מושך את הגרסה העדכנית.

2. בחרו מקום למאגר

המאגר לא יכול לשבת על השרת שאתם מגנים עליו. שתי אפשרויות נפוצות:

3. שמרו את פרטי הגישה

החזיקו הכול בקובץ אחד שרק root קורא, כדי שהטיימר וה-shell שלכם ישתמשו באותן הגדרות:

cat > /root/.restic-env <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.example.com/my-bucket/web1"
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export AWS_ACCESS_KEY_ID="your-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret"
EOF
openssl rand -base64 32 > /root/.restic-pass
chmod 600 /root/.restic-env /root/.restic-pass

עכשיו העתיקו את התוכן של /root/.restic-pass למנהל הסיסמאות שלכם. בלעדיו אי אפשר לפענח את הגיבויים — לא אתם ולא אף אחד אחר.

4. אתחלו והריצו את הגיבוי הראשון

source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
  --exclude-caches --exclude '/root/.cache'
restic snapshots

התאימו את הנתיבים למקום שבו הנתונים שלכם באמת נמצאים. ה-volumes של Docker נמצאים ב-/var/lib/docker/volumes; נתוני אפליקציות לרוב ב-/srv או ב-/opt.

5. מסדי נתונים: קודם דאמפ, אחר כך גיבוי

אל תגבו את הקבצים הגולמיים של מסד נתונים פעיל. עשו דאמפ ממש לפני הגיבוי:

mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump

הוסיפו את /var/backups/db לנתיבי הגיבוי. במדריך ל-PostgreSQL יש עוד על דאמפים.

6. תזמנו עם systemd

כאן טיימר עדיף על cron: הוא כותב ל-journal ומשלים הרצה שהוחמצה אם השרת היה כבוי בזמן המתוכנן.

# /etc/systemd/system/restic-backup.service
[Unit]
Description=restic backup

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'source /root/.restic-env && restic backup /etc /home /root /srv /var/www /var/backups/db --exclude-caches && restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune'
# /etc/systemd/system/restic-backup.timer
[Unit]
Description=Daily restic backup

[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true

[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer

forget --prune שומר 7 צילומי מצב יומיים, 4 שבועיים ו-6 חודשיים ומוחק את השאר. אם יש לכם שלב של דאמפ למסד הנתונים, שימו אותו בשורת ExecStartPre=.

7. שחזרו משהו באמת

זה השלב שהופך את "יש לנו גיבויים" לעובדה. החזירו תיקייה אחת לתיקייה זמנית ותסתכלו עליה:

source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check

עשו את זה פעם אחת עכשיו ושוב כל כמה חודשים. restic check מאמת את מבנה המאגר; השחזור מוכיח שהנתונים באמת שם.

restic ו-Managed Backups

הם לא מתחרים. Managed Backups יוצרים כל יום נקודת שחזור של כל השרת, שמשחזרים מלוח הבקרה — הפתרון המהיר אחרי עדכון שהשתבש. הם עולים $2 לחודש וכלולים בחינם בכל תוכנית שנתית. restic נותן עותקים ברמת קבצים, מחוץ לשרת, באחסון שאתם שולטים בו — וזה חשוב כשהבעיה היא קובץ שנמחק ביום שלישי שעבר, או כשרוצים עותק לגמרי מחוץ לתשתית שלנו.

אם אתם שומרים מידע רגיש, שלבו את זה עם הצפנת דיסק מלאה, או הציצו בשימוש לאחסון מוצפן כדי להריץ יעד גיבוי משלכם. תוכנית Micro מספיקה לרוב השרתים הקטנים יחד עם משימות הגיבוי שלהם.

שאלות נפוצות

מה קורה אם אאבד את הסיסמה של restic?

הגיבויים אבודים לתמיד. restic מצפין הכול בצד הלקוח ואין מפתח שחזור. שמרו את הסיסמה במנהל סיסמאות, לא רק בשרת שאתם מגבים.

איפה המאגר צריך להיות?

בכל מקום חוץ מהשרת עצמו: אחסון אובייקטים תואם S3, VPS אחר דרך SFTP או מחשב בבית. גיבוי על אותו דיסק מת יחד איתו.

איך מגבים מסד נתונים עם restic?

קודם עושים דאמפ ומגבים את הדאמפ — ל-PostgreSQL 'pg_dump -Fc', ל-MySQL 'mysqldump --single-transaction'. העתקת הקבצים של מסד נתונים פעיל עלולה לתת גיבוי שלא עולה.

כמה מקום הגיבויים תופסים?

פחות ממה שנדמה. restic מפרק קבצים לחתיכות ושומר כל חתיכה פעם אחת, כך שצילומי מצב יומיים של שרת שכמעט לא משתנה מוסיפים רק את הנתונים שהשתנו.

אני עדיין צריך Managed Backups?

הם פותרים בעיות שונות. Managed Backups נותנים נקודות שחזור יומיות של כל השרת, שמשחזרים מלוח הבקרה. restic נותן עותקים ברמת קבצים, מחוץ לשרת ובשליטתכם. הרבה אנשים משתמשים בשניהם.

תגובות

אין עדיין תגובות. היו הראשונים.

השאירו תגובה

התגובות עוברות מודרציה לפני שהן מופיעות.