تحميل النسخ الاحتياطية إلى Dropbox باستخدام crontab و dropboxd

تتمتع Dropbox بميزة تتمثل في مزامنة النسخة الاحتياطية الجديدة فور ظهورها في النظام. الفكرة هي وضع النسخة الاحتياطية الجديدة في مجلد Dropbox المحلي (باستخدام سكريبت cron مُقدَّم).

قبل المتابعة، يجب أن تعرف:

  1. يمكنك استخدام Dropbox لتخزين الملفات بقدر ما يسمح به خطتك.
  2. يمكنك ربط ما يصل إلى 3 أجهزة بـ Dropbox في الخطة المجانية (بالمناسبة، يمكن تجاوز هذا القيد لأجهزة Android).
  3. عند تشغيل Dropbox على خادم Linux، ستحتاج إلى مزامنة مجلد واحد فقط. أو، نظرًا لأن Dropbox حل ثنائي الاتجاه، فقد يقوم بملء خادمك بجميع البيانات من السحابة. وهذا قد يستهلك مساحة على خادمك.
  4. يجب عليك إنشاء سكريبت rsync إضافي للمزامنة بين مجلد نسخ Discourse الاحتياطية ومجلد Dropbox الاحتياطي المحلي. وهذا يتطلب مساحة مضاعفة للنسخ الاحتياطية. سابقًا، كانت Dropbox تسمح بالروابط الرمزية (symlinks)، لكن هذه الميزة غير متوفرة حاليًا.
  5. للوصول إلى نسخك الاحتياطية، لا تحتاج إلى صلاحيات root، لكنني أشغل خادم Dropbox بصلاحيات root في هذا الدليل (ربما غير آمن، أهلاً بك في تحسينه)

أولاً، تحتاج إلى إعداد النسخ الاحتياطية في Discourse في /admin/site_settings/category/backups (قيماتي المخصصة بين قوسين)

الحد الأقصى للنسخ الاحتياطية (3) - هذا يدير عدد الملفات التي ستُحتفظ بها في Dropbox
تكرار النسخ الاحتياطي (1) - يوميًا
وقت النسخ الاحتياطي (3:30 بتوقيت UTC) - الافتراضي
مستوى ضغط gzip للنسخ الاحتياطي (6) - اختر بين سرعة الضغط (1) أو حجم أقل (9)، لكن في حالة VPS، قد يقوم مزود الخدمة بإعادة تشغيل خادمك في حالة استهلاك عالٍ طويل الأمد لمعالج CPU

ثانيًا، قم بربط خادمك بـ Dropbox باستخدام أوامر shell (مهم: لأنني أشغل الخدمة بصلاحيات root، فأنا مسجل بصلاحيات root في هذه الخطوة - لذا يمكنك تجربة مستخدمك العادي):

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
# سيتم إنشاء مجلد .dropbox-dist
# تشغيل خادم Dropbox
sh ~/.dropbox-dist/dropboxd

عند استخدام Dropbox لأول مرة على خادمك، ستظهر رابط ويب فريد. تحتاج إلى نسخه ولصقه في متصفح الويب واتباع التعليمات. بعد ذلك، سيتم إنشاء مجلد Dropbox في مجلد منزلك. توصي Dropbox رسميًا بتحميل سكريبت Python لإدارة الخادم. أنا لا أستخدمه.

الأوامر لإدارة الخادم:

dropbox status
dropbox start
dropbox stop
تحقق من إنشاء سكريبت التشغيل التلقائي (انقر لتوسيع النص المخفي):
#cat /etc/systemd/system/dropbox.service

[Unit]
Description=خدمة Dropbox
After=network.target

[Service]
ExecStart=/bin/sh -c '/usr/local/bin/dropbox start'
ExecStop=/bin/sh -c '/usr/local/bin/dropbox stop'
PIDFile=/root/.dropbox/dropbox.pid
User=root
Group=root
Type=forking
Restart=on-failure
RestartSec=5
StartLimitInterval=60s
StartLimitBurst=3

[Install]
WantedBy=multi-user.target

يوفر Discourse ملفات نسخ احتياطية ويدير عددها وتكرارها.
يقوم مهمة crontab rsync بنسخ النسخة الاحتياطية الجديدة إلى مجلد Dropbox المحلي.
بعد ذلك، يقوم Dropbox برفع الملف الجديد إلى السحابة.
عندما يقوم Discourse بحذف ملف النسخ الاحتياطي القديم في الليلة التالية، يقوم rsync بحذفه أيضًا من Dropbox.

ثالثًا، أنشئ مجلد Dropbox لنسخ النسخ الاحتياطية:

mkdir ~/Dropbox/backups

رابعًا، جهز مجلدًا للمزامنة العكسية (إلغاء مزامنة المجلدات غير الضرورية)
على سبيل المثال، يحتوي مجلد Dropbox الخاص بك على مجلدات فرعية وملف:

backups
books
stuff
logo.png

تحتاج إلى استبعاد كل شيء ما عدا backups. في الواقع، تضيف الأمر عناصر إلى قائمة الاستبعاد:

dropbox exclude add "Dropbox/books/"
dropbox exclude add "Dropbox/stuff/"
dropbox exclude add "Dropbox/logo.png"

إذا قمت بإضافة backups إلى قائمة الاستبعاد بالخطأ، فيمكنك إعادتها إلى المزامنة بإزالة العنصر من القائمة:

dropbox exclude remove "Dropbox/backups/"

يمكن التحقق من حالة النسخ الاحتياطي المحددة بالأمر:

dropbox filestatus Dropbox/backups/niti-2021-01-21-033726-v20201218000001.tar.gz

خامسًا، جهز سكريبت للمزامنة المحلية ومسح الذاكرة المؤقتة /root/rsync.dropbox:

#!/bin/sh
rsync -avh --stats --progress --delete /var/discourse/shared/standalone/backups/default/ /root/Dropbox/backups/
rm -rf /root/Dropbox/.dropbox.cache/

سادسًا، أضف الأمر إلى crontab في الساعة 8 صباحًا بالتوقيت المحلي: crontab -e

0 8 * * * /bin/bash /root/rsync.dropbox

هناك نافذة زمنية بين 3 صباحًا بتوقيت UTC و 8 صباحًا بالتوقيت المحلي - يجب أن تكون كافية لإكمال النسخ الاحتياطي قبل بدء مزامنته مع Dropbox.

ملاحظة ختامية
لم أتحقق من هذا الإعداد لمدة نصف عام أو أكثر. الآن أدركت أن الأمر dropbox status قد أرجع:

أنت تستخدم إصدارًا قديمًا من Dropbox. يرجى التحديث إلى أحدث إصدار للاستمرار في استخدام Dropbox.

لا تزال المزامنة تعمل، لذلك لن أقوم بترقيته. آخر مرة تم فيها فقدان دعم الروابط الرمزية.

7 إعجابات