−25%

على الدفع السنوي لـ Windows حتى 31 أكتوبر. عرض الخطط

EQVPS

كيف تنسخ VPS احتياطيًا باستخدام restic (مشفّر وخارج الخادم)

نسخ احتياطية مشفّرة وخالية من التكرار للـVPS مع restic: مستودع على تخزين متوافق مع S3 أو على خادم آخر، ومؤقّت systemd، وسياسة احتفاظ، واختبار استعادة.

لدى الجميع نسخ احتياطية إلى أن يحاولوا استعادة واحدة. يتبيّن أن المجلد فارغ، أو أن مهمة cron ماتت في مارس، أو أن الأرشيف موجود على القرص نفسه الذي تعطّل للتو. يحل 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

عدّل المسارات لتطابق أماكن بياناتك الفعلية. وحدات تخزين 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؟

خذ تفريغًا (dump) أولًا وانسخ التفريغ — لـPostgreSQL 'pg_dump -Fc'، ولـMySQL 'mysqldump --single-transaction'. نسخ ملفات قاعدة بيانات قيد التشغيل قد يعطيك نسخة لا تعمل.

كم تشغل النسخ الاحتياطية من مساحة؟

أقل مما تتوقع. يقسّم restic الملفات إلى أجزاء ويخزّن كل جزء مرة واحدة، لذا فإن اللقطات اليومية لخادم لا يتغير كثيرًا لا تضيف إلا البيانات المتغيرة.

هل ما زلت أحتاج إلى Managed Backups؟

هما يحلّان مشكلتين مختلفتين. تمنحك Managed Backups نقاط استعادة يومية للخادم كله تسترجعها من اللوحة. ويمنحك restic نسخًا على مستوى الملفات، خارج الخادم وتحت سيطرتك. كثيرون يستخدمون الاثنين.

التعليقات

لا تعليقات بعد. كن الأول.

اترك تعليقًا

تُراجَع التعليقات قبل ظهورها.