BorgBackup (اختصارا: Borg) هو برنامج نسخ احتياطي مكرر. كما يتم دعم الضغط والتشفير المصادق عليه كخيارات.
الهدف الرئيسي ل Borg هو توفير حل نسخ احتياطي فعال وآمن. بفضل إلغاء الازدواجية ، فإن عملية النسخ الاحتياطي مع Borg سريعة جدا وتجعل Borg مثيرة للاهتمام للغاية للنسخ الاحتياطي اليومي. قد تلاحظ أن Borg أسرع بكثير من بعض الطرق الأخرى ، اعتمادا على كمية البيانات وعدد التغييرات التي تحتاج إلى نسخها احتياطيا. مع Borg ، يتم تشفير جميع البيانات بالفعل على جانب العميل ، مما يجعل Borg خيارا جيدا للأنظمة المستضافة.
يمكن العثور على مزيد من المعلومات حول BorgBackup على الموقع الرسمي.
#
الخطوة 1 – التثبيت #
هناك ثلاث طرق لتثبيت بورغ.
- حزمة التوزيع
- ثنائي مستقل
- من المصدر
ستجد في وثائق بورغ أوصافا مفصلة للغاية للطرق المختلفة. هذا هو السبب في أننا لا ندخل في التفاصيل هنا.
لأسباب تتعلق بالتوافق ، يرجى استخدام الإصدار الحالي من Borg! (> = 1.0.9)
#
الخطوة 2 – سير العمل مع Borg #
#
الخطوة 2.1 – قم بتنشيط Borg وقم بتهيئة صندوق التخزين الخاص بك #
لكي يتم تمكين Borg على صندوق التخزين الخاص بك ، يجب عليك أولاً تمكين الخدمة على واجهة الويب الخاصة بالروبوت. للقيام بذلك ، انتقل إلى صفحة الإعدادات الخاصة بصندوق التخزين الخاص بك في Robot وانقر فوق تنشيط في “دعم SSH”.
نظرًا لأن SSH غير متاح في صندوق التخزين ، يجب عليك استخدام SFTP أو شيء مشابه لهذه الخطوة.
بالنسبة إلى Borg ، يمكنك استخدام مصادقة كلمة المرور ، ولكن يوصى بالمصادقة عبر المفتاح العام. يوصى بهذا بشكل خاص إذا كنت تريد أتمتة النسخ الاحتياطية باستخدام cronjobs.
لاستخدام Borg ، مفتاح SSH الخاص بك ليس (!) مطلوبًا بتنسيق RFC4716 ، مثل SFTP / SCP. تحتاج إلى تخزين مفتاحك العام العادي. إذا كنت تستخدم كل من Borg و SFTP / SCP ، فيجب تخزين كلا المفتاحين (تنسيق RFC4716 وعادي).
قم بإنشاء المجلد “.ssh” في صندوق التخزين الخاص بك وقم بتخزين الملف “author_keys” فيه. يجب أن يحتوي هذا على مفتاحك العمومي:
ssh-rsa AAAAB3NzaC1yc2EAAAA.......rdj7eitNUjlIV8ovvAH/6SAsKD6
قم بتعيين أذونات المجلد “.ssh” على “0700” وللمفتاح “author_keys” على “0600”.
لا يُسمح للدليل الرئيسي الموجود على صندوق التخزين / مساحة النسخ الاحتياطي بالحصول على أذونات الكتابة للمجموعة والآخرين ، وإلا فإن المصادقة عبر ملف المفتاح غير ممكنة. يتم تعيين هذا بشكل افتراضي ، ولكن يمكن تغييره.
الآن عليك إنشاء دليل لمستودع النسخ الاحتياطي في صندوق التخزين. على سبيل المثال ، قم بإنشاء مجلد “backups” ، وتحته ، مجلد “server1”. سيتم بعد ذلك تهيئة المجلد “server1” كمستودع Borg في الخطوة التالية. ضمن “النسخ الاحتياطية” ، يمكنك بعد ذلك إنشاء أدلة أخرى للخوادم الأخرى التي تريد نسخها احتياطيًا.
/backups/server1
#
الخطوة 2.2 – تهيئة مستودع Borg #
إذا كنت تستخدم مفتاح SSH ، ولم يكن هذا هو المفتاح الافتراضي ، فلديك خيار تحديد المفتاح المطلوب باستخدام متغير البيئة BORG_RSH. يمكنك تحديد أمر SSH الذي يجب أن يستخدمه Borg. سيكون المعيار فقط “ssh”.
$ export BORG_RSH='ssh -i /home/userXY/.ssh/id_ed25519'
عند تهيئة Borg ، ستتم مطالبتك بكلمة مرور للمستودع الخاص بك. فقط باستخدام كلمة المرور هذه ، يمكنك الوصول إلى المستودع في المستقبل. لذلك فهو مطلوب لكل عملية قراءة أو كتابة في المستودع. يجب أن تكون قادرًا على تذكر كلمة المرور جيدًا لأنه لا يمكن استعادتها! لتجنب الاضطرار إلى إدخال كلمة المرور في كل مرة يتصل فيها Borg ، يمكنك اختيارياً تعيين متغير البيئة BORG_PASSPHRASE.
$ export BORG_PASSPHRASE="top_secret_passphrase"
أولاً ، تحتاج إلى تهيئة مستودع Borg. لا يعد المستودع أكثر من مجلد في صندوق التخزين الخاص بك والذي يوفره Borg مع بعض الهياكل الأساسية. يتم تخزين جميع النسخ الاحتياطية في هذا المجلد.
يقوم الأمر التالي بتهيئة المجلد “/ backups / server1” في صندوق التخزين الخاص بك.
$ borg init --encryption=repokey ssh://[email protected]:23/./backups/server1
#
الخطوة 2.3 – إنشاء أول نسخة احتياطية #
على سبيل المثال ، استخدم الأمر التالي لعمل نسخة احتياطية من مجلدات “src” و “build” من الدليل الرئيسي إلى المستودع في صندوق التخزين الخاص بك. يجب أن تعطي كل نسخة احتياطية اسمًا فريدًا. الطابع الزمني مفيد في إنشاء أسماء فريدة.
$ borg create ssh://[email protected]:23/./backups/server1::2017_11_11_initial ~/src ~/built
You can call Borg create using many other options. You can do this, for example, to view the progress of a backup while it is processing or to see statistics about the backup once it is finished. In addition, you can specify exclude patterns and other things.
لمزيد من المعلومات، يرجى زيارة Borg إنشاء الوثائق.
#
الخطوة 2.4 – متابعة النسخ الاحتياطية (المتزايدة) #
النسخ الاحتياطية التالية مطابقة للنسخة الأولى. ومع ذلك ، بفضل إزالة الازدواجية ، فهي أسرع بكثير وفعالة للغاية في الذاكرة ، لأنها تدريجية فقط.
تحتاج فقط إلى ضبط اسم النسخة الاحتياطية أثناء النسخ الاحتياطي للمتابعة. تذكر أنه يجب عليك استخدام أسماء فريدة كما هو مذكور أعلاه.
ما عليك سوى استخدام الخيار “–stats” في النسخة الاحتياطية التالية لمعرفة مدى فعاليتها.
$ borg create --stats ssh://[email protected]:23/./backups/server1::2017_11_12 ~/src ~/built
#
الخطوة 2.5 – المزيد من أوامر Borg بما في ذلك قائمة المحفوظات ، واستعادة النسخ الاحتياطية #
توفر وثائق Borg وصفًا تفصيليًا للغاية لجميع أوامر Borg.
من الأفضل أن تبدأ بإلقاء نظرة على قسم البدء السريع ثم الغوص في قسم الاستخدام للدخول في التفاصيل.
The documentation provides many examples of listing archives or restoring backups. It is also possible, for example, to display diffs between backups or to delete old backups to recover storage space.
#
الخطوة 2.6 – أتمتة النسخ الاحتياطية باستخدام Cron #
إنشاء دليل لملف السجل.
$ mkdir -p /var/log/borg
أولاً ، قم بإنشاء برنامج نصي يقوم بتنفيذ النسخ الاحتياطية. قد يبدو هذا مثل النص التالي ويكون تحت /usr/local/bin/backup.sh.
#!/usr/bin/env bash
##
## Set environment variables
##
## if you don't use the standard SSH key,
## you have to specify the path to the key like this
# export BORG_RSH="ssh -i /home/userXY/.ssh/id_ed25519"
## You can save your borg passphrase in an environment
## variable, so you don't need to type it in when using borg
# export BORG_PASSPHRASE="top_secret_passphrase"
##
## Set some variables
##
LOG="/var/log/borg/backup.log"
BACKUP_USER="u602"
REPOSITORY_DIR="server1"
## Tip: If using with a Backup Space you have to use
## 'your-storagebox.de' instead of 'your-backup.de'
REPOSITORY="ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}"
##
## Output to a logfile
##
exec > >(tee -i ${LOG})
exec 2>&1
echo "###### Backup started: $(date) ######"
##
## At this place you could perform different tasks
## that will take place before the backup, e.g.
##
## - Create a list of installed software
## - Create a database dump
##
##
## Transfer the files into the repository.
## In this example the folders root, etc,
## var/www and home will be saved.
## In addition you find a list of excludes that should not
## be in a backup and are excluded by default.
##
echo "Transfer files ..."
borg create -v --stats \
$REPOSITORY::'{now:%Y-%m-%d_%H:%M}' \
/root \
/etc \
/var/www \
/home \
--exclude /dev \
--exclude /proc \
--exclude /sys \
--exclude /var/run \
--exclude /run \
--exclude /lost+found \
--exclude /mnt \
--exclude /var/lib/lxcfs
echo "###### Backup ended: $(date) ######"
الآن اختبر النص قبل إنشاء cronjob.
$ chmod u+x /usr/local/bin/backup.sh
$ /usr/local/bin/backup.sh
إذا كان كل شيء يعمل بشكل جيد ، فيمكنك الآن تشغيل البرنامج النصي ككرونجوب. فتح crontab كجذر:
crontab -e
وأضف السطر التالي لتشغيل نسخة احتياطية يومية في الساعة 00:00.
0 0 * * * /usr/local/bin/backup.sh > /dev/null 2>&1
#
الخطوة 3 – تلميحات #
#
الخطوة 3.1 – نسخ احتياطي كامل للنظام #
إذا كنت تريد نسخ النظام بأكمله احتياطيًا على خادم Linux ، فيجب أن تتذكر أنه ليست كل الملفات والمجلدات تنتمي إلى نسخة احتياطية. يجب استبعاد البعض بشكل افتراضي.
لهذا ، يحتوي الأمر create على خيار –exclude أو يمكنك تحديد ملف استثناء. يتم وصف الاستخدام بالتفصيل في Borg create documentation
فيما يلي مثال على دعوة إنشاء borg للحصول على نسخة احتياطية من النظام الكامل:
borg create -v --stats \
$REPOSITORY::'{now:%Y-%m-%d_%H:%M}' \
/ \
--exclude /dev \
--exclude /proc \
--exclude /sys \
--exclude /var/run \
--exclude /run \
--exclude /lost+found \
--exclude /mnt \
--exclude /var/lib/lxcfs
#
الخطوة 3.2 – إلغاء البيانات المكررة والموثوقية #
نظرا لأن BorgBackup يستخدم إلغاء التكرار ، يمكنك عمل نسخ احتياطية بسرعة كبيرة ودون استخدام الكثير من التخزين.
ولكن عليك أيضًا أن تدرك أنه يتم حفظ كل ملف مرة واحدة بالضبط. في حالة تلف ملف بسبب فشل القرص ، على سبيل المثال ، سيتم إتلاف هذا الملف في جميع النسخ الاحتياطية التالية.
لذلك ، من الأفضل تخزين البيانات المهمة جدًا في أكثر من مستودع واحد!
#
الخطوة 3.3 – إصدار Borg على الخادم #
لتجنب مشاكل التوافق ، يوصى باستخدام نفس الإصدار من Borg Backup على الخادم الخاص بك وعلى Storage Box / Backup Space.
لكل تحديث رئيسي هناك إصدار متاح ، يتم تحديثه بشكل منتظم وسريع من قبلنا. يمكنك تحديد الإصدار الذي تريد استخدامه في صندوق التخزين / مساحة النسخ الاحتياطي باستخدام معلمة Borg –remote-path. إذا لم يتم تحديد المعلمة ، فسيتم استخدام أحدث إصدار ، وهو متاح في Storage Box / Backup Space.
الإصدارات 1.0 و 1.1 و 1.2 مثبتة حاليًا. الإصدار الأحدث ، لذلك 1.2. هي النسخة الافتراضية. إذا كنت لا تزال تريد استخدام الإصدار 1.1 ، فاستخدم:
$ borg init --encryption = repokey --remote-path=borg-1.1 ssh://[email protected]:23/./backups/server1
يشير borg-1.1 إلى الإصدار 1.1.x.
يوفر سجل التغيير في وثائق BorgBackup معلومات حول التغييرات بين الإصدارات ومشكلات التوافق المحتملة ، إن وجدت.
#
الخطوة 3.4 – Borg و SSH #
يستخدم BorgBackup SSH عبر المنفذ 23. وصول SSH مقصور على Borg ولا يمكن تسجيل الدخول!
#
الخطوة 3.5 – استخدم Borg و SFTP / SCP بالتوازي مع ملف keyfile #
كما هو موضح أعلاه ، يتطلب Borg المفتاح العام العادي ، بينما يتطلب SFTP / SCP مفتاح SSH بتنسيق RFC4716. إذا كنت تستخدم كل من Borg و SFTP / SCP ، فيجب تخزين كلا المفتاحين (تنسيق RFC4716 وعادي) في ملف author_keys.
#
الخطوة 3.6 – Borg keyfile and password #
كلمة المرور التي تختارها لمستودع Borg الخاص بك لن يتم حفظها معنا ولا يمكننا استعادتها! حافظ على سلامته.
في وضع repokey (افتراضي) ، يوجد مفتاح الريبو في تكوين الريبو ، أي في صندوق التخزين. يوصى بحفظ نسخة احتياطية من المفتاح. يمكن العثور على مزيد من المعلومات في وثائق بورغ.
#
خاتمة #
مع Borgbackup ، قمت بتثبيت وتهيئة برنامج موفر للمساحة وآلي لنسخك الاحتياطية.