النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup

النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup

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

يمكن أيضًا ضغط مكونات المستودع وتشفيرها ، والأهم من ذلك ، أثناء عمليات النسخ الاحتياطي المتكررة ، يمكن إعادة استخدامها.

النسخة الاحتياطية في هذا المستودع عبارة عن سلسلة مسماة من المكونات المتعلقة ببعضها البعض ، على سبيل المثال ، بناءً على وظائف التجزئة المختلفة.

هناك العديد من الحلول المماثلة ، سأركز على 3: zbackup و borgbackup و restic.

نتائج متوقعة

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

من المستحسن للغاية أيضًا أن تكون قادرًا على نسخ الملفات احتياطيًا مباشرة دون استخدام برامج الأرشفة مثل tar ، وكذلك العمل مع ssh / sftp بدون أدوات إضافية مثل rsync و sshfs.

السلوك عند إنشاء نسخ احتياطية:

  1. سيكون حجم المستودع مساوياً لحجم التغييرات أو أقل.
  2. يُتوقع ارتفاع استخدام وحدة المعالجة المركزية عند استخدام الضغط و / أو التشفير ، ومن المحتمل أن يكون هناك حمل ثقيل جدًا على الشبكة والنظام الفرعي للقرص إذا كانت عملية الأرشفة و / أو التشفير تعمل على خادم تخزين النسخ الاحتياطي.
  3. في حالة تلف المستودع ، من المحتمل حدوث خطأ متأخر عند إنشاء نسخ احتياطية جديدة وعند محاولة الاستعادة. تحتاج إلى التخطيط لإجراءات إضافية لضمان تكامل المستودع أو استخدام أدوات التحقق من التكامل المضمنة.

يعتبر العمل مع القطران كقيمة مرجعية ، كما هو موضح في إحدى المقالات السابقة.

اختبار zbackup

تتمثل الآلية العامة لعملية zbackup في أن البرنامج يجد مناطق تحتوي على نفس البيانات في دفق بيانات الإدخال ، ثم يقوم بضغطها وتشفيرها اختياريًا ، مما يوفر كل منطقة مرة واحدة فقط.

لإلغاء البيانات المكررة ، يتم استخدام وظيفة تجزئة الحلقة 64 بت مع نافذة منزلقة للتحقق من البايت بايت لمطابقة كتل البيانات الموجودة بالفعل (على غرار كيفية تنفيذها في rsync).

للضغط ، يتم استخدام lzma و lzo في التنفيذ متعدد مؤشرات الترابط ، وللتشفير ، يتم استخدام aes. في أحدث الإصدارات ، من الممكن حذف البيانات القديمة من المستودع في المستقبل.
البرنامج مكتوب بلغة C ++ مع الحد الأدنى من التبعيات. يبدو أن المؤلف مستوحى من طريقة unix ، لذلك يتلقى البرنامج بيانات على stdin عند إنشاء نسخ احتياطية ، وإصدار دفق بيانات مماثل لـ stdout عند الاستعادة. وبالتالي ، يمكن استخدام zbackup باعتباره "لبنة" جيدة جدًا عند كتابة حلول النسخ الاحتياطي الخاصة بك. على سبيل المثال ، بالنسبة لمؤلف المقال ، كان هذا البرنامج هو أداة النسخ الاحتياطي الرئيسية للأجهزة المنزلية منذ عام 2014 تقريبًا.

سيتم استخدام القطران العادي كتدفق بيانات ، ما لم يُذكر خلاف ذلك.

دعونا نرى ما ستكون النتائج:

تم فحص العمل في نسختين:

  1. يتم إنشاء مستودع وتشغيل zbackup على الخادم بالبيانات الأصلية ، ثم يتم نقل محتويات المستودع إلى خادم تخزين النسخ الاحتياطي.
  2. يتم إنشاء مستودع على خادم تخزين النسخ الاحتياطي ، ويتم تشغيل zbackup عبر ssh على خادم تخزين النسخ الاحتياطي ، ويتم تقديم البيانات إليه من خلال الأنبوب.

كانت نتائج الخيار الأول كما يلي: 43m11s - عند استخدام مستودع غير مشفر وضاغط lzma ، 19m13s - عند استبدال الضاغط بـ lzo.

كان الحمل على الخادم بالبيانات الأولية كما يلي (يظهر مثال مع lzma ، مع lzo كانت الصورة نفسها تقريبًا ، لكن حصة rsync كانت حوالي ربع الوقت):

النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup

من الواضح أن عملية النسخ الاحتياطي هذه مناسبة فقط للتغييرات الصغيرة والنادرة نسبيًا. من المستحسن للغاية أيضًا تقييد عمل zbackup على مؤشر ترابط واحد ، وإلا فسيكون هناك حمل كبير جدًا على وحدة المعالجة المركزية ، لأن. البرنامج قادر بشكل جيد جدا على العمل في مواضيع متعددة. كان الحمل على القرص صغيرًا ، والذي بشكل عام مع نظام فرعي حديث للقرص يعتمد على SSD لن يكون ملحوظًا. يمكنك أيضًا أن ترى بوضوح بدء عملية مزامنة بيانات المستودع مع خادم بعيد ، وسرعة العمل قابلة للمقارنة مع rsync المعتاد وتستند إلى أداء نظام القرص الفرعي لخادم تخزين النسخ الاحتياطي. عيب هذا النهج هو تخزين مستودع محلي ، ونتيجة لذلك ، ازدواجية البيانات.

أكثر إثارة للاهتمام وقابلة للتطبيق من الناحية العملية هو الخيار الثاني مع تشغيل zbackup على الفور على خادم تخزين النسخ الاحتياطي.

للبدء ، سيتم التحقق من العمل دون استخدام التشفير باستخدام ضاغط lzma:

النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup

وقت تشغيل كل تشغيل اختباري:

تشغيل 1
تشغيل 2
تشغيل 3

39m45s
40m20s
40m3s

7m36s
8m3s
7m48s

15m35s
15m48s
15m38s

إذا قمت بتمكين التشفير باستخدام aes ، فستكون النتائج قريبة جدًا:

النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup

وقت التشغيل على نفس البيانات مع التشفير:

تشغيل 1
تشغيل 2
تشغيل 3

43m40s
44m12s
44m3s

8m3s
8m15s
8m12s

15m0s
15m40s
15m25s

إذا تم الجمع بين التشفير والضغط على lzo ، فسيظهر على النحو التالي:

النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup

ساعات العمل:

تشغيل 1
تشغيل 2
تشغيل 3

18m2s
18m15s
18m12s

5m13s
5m24s
5m20s

8m48s
9m3s
8m51s

كان حجم المستودع الناتج هو نفسه نسبيًا عند 13 غيغابايت. هذا يعني أن إلغاء البيانات المكررة يعمل بشكل صحيح. أيضًا ، على البيانات المضغوطة بالفعل ، يعطي استخدام lzo تأثيرًا ملموسًا ، من حيث إجمالي وقت التشغيل ، فإن zbackup قريب جدًا من الازدواجية / المضاعفة ، ولكنه يتخلف عن تلك القائمة على librsync بمقدار 2-5 مرات.

الفوائد واضحة - توفير مساحة القرص على خادم تخزين النسخ الاحتياطي. بالنسبة لأدوات التحقق من المستودع ، لم يتم توفيرها من قبل مؤلف zbackup ، فمن المستحسن استخدام مجموعة أقراص متسامحة أو مزود خدمة سحابية.

بشكل عام ، انطباع جيد جدًا ، على الرغم من حقيقة أن المشروع لا يزال قائماً منذ حوالي 3 سنوات (آخر طلب ميزة كان منذ حوالي عام ، ولكن بدون استجابة).

اختبار borgbackup

Borgbackup هو شوكة العلية ، نظام آخر مشابه لـ zbackup. مكتوب بلغة python ، يحتوي على قائمة من الميزات المشابهة لـ zbackup ، ولكن بالإضافة إلى ذلك يمكنه:

  • تحميل النسخ الاحتياطية مع الصمامات
  • تحقق من محتويات المستودع
  • العمل في وضع خادم العميل
  • استخدم ضواغط مختلفة للبيانات ، بالإضافة إلى تحديد إرشادي لنوع الملف عند ضغطه.
  • 2 خيارات التشفير ، AES و Blake
  • أداة مدمجة لـ

فحوصات الأداء

معيار borgbackup crud ssh: // backup_server / repo / path local_dir

جاءت النتائج على النحو التالي:

CZ-BIG 96.51 ميجا بايت / ثانية (10 100.00 ميغابايت كل الملفات الصفرية: 10.36 ثانية)
RZ-BIG 57.22 ميجا بايت / ثانية (10
100.00 ميغابايت كل الملفات الصفرية: 17.48 ثانية)
UZ-BIG 253.63 ميجا بايت / ثانية (10 100.00 ميغابايت كل الملفات الصفرية: 3.94 ثانية)
DZ-BIG 351.06 ميجا بايت / ثانية (10
100.00 ميغابايت كل الملفات الصفرية: 2.85 ثانية)
CR-BIG 34.30 ميجا بايت / ثانية (10 100.00 ميغابايت من الملفات العشوائية: 29.15 ثانية)
RR-BIG 60.69 ميجا بايت / ثانية (10
100.00 ميغابايت من الملفات العشوائية: 16.48 ثانية)
UR-BIG 311.06 ميجا بايت / ثانية (10 100.00 ميغابايت من الملفات العشوائية: 3.21 ثانية)
DR-BIG 72.63 ميجا بايت / ثانية (10
100.00 ميغابايت من الملفات العشوائية: 13.77 ثانية)
CZ-MEDIUM 108.59 ميجا بايت / ثانية (1000 ميجا بايت / ثانية) 1.00 ميغابايت كل الملفات الصفرية: 9.21 ثانية)
RZ-MEDIUM 76.16 ميجا بايت / ثانية (1000
1.00 ميغابايت كل الملفات الصفرية: 13.13 ثانية)
UZ-MEDIUM 331.27 ميجا بايت / ثانية (1000 1.00 ميغابايت كل الملفات الصفرية: 3.02 ثانية)
DZ-MEDIUM 387.36 ميجا بايت / ثانية (1000 ميجا بايت / ثانية)
1.00 ميغابايت كل الملفات الصفرية: 2.58 ثانية)
CR-MEDIUM 37.80 ميجا بايت / ثانية (1000 1.00 ميغابايت من الملفات العشوائية: 26.45 ثانية)
RR-MEDIUM 68.90 ميجا بايت / ثانية (1000
1.00 ميغابايت من الملفات العشوائية: 14.51 ثانية)
UR-MEDIUM 347.24 ميجابايت / ثانية (1000 1.00 ميغابايت من الملفات العشوائية: 2.88 ثانية)
DR-MEDIUM 48.80 ميجا بايت / ثانية (1000
1.00 ميغابايت من الملفات العشوائية: 20.49 ثانية)
CZ-SMALL 11.72 ميجا بايت / ثانية (10000 10.00 كيلو بايت جميع الملفات الصفرية: 8.53 ثانية)
RZ-SMALL 32.57 ميجا بايت / ثانية (10000
10.00 كيلو بايت جميع الملفات الصفرية: 3.07 ثانية)
UZ-SMALL 19.37 ميجا بايت / ثانية (10000 10.00 كيلو بايت جميع الملفات الصفرية: 5.16 ثانية)
DZ-SMALL 33.71 ميجا بايت / ثانية
10.00 كيلو بايت جميع الملفات الصفرية: 2.97 ثانية)
CR-SMALL 6.85 ميجا بايت / ثانية 10.00 كيلو بايت ملفات عشوائية: 14.60 ثانية)
RR-SMALL 31.27 ميجا بايت / ثانية
10.00 كيلو بايت ملفات عشوائية: 3.20 ثانية)
UR-SMALL 12.28 ميجا بايت / ثانية (10000 10.00 كيلو بايت ملفات عشوائية: 8.14 ثانية)
DR-SMALL 18.78 ميجا بايت / ثانية
10.00 كيلو بايت ملفات عشوائية: 5.32 ثانية)

عند الاختبار ، سيتم استخدام الاستدلال أثناء الضغط مع تعريف نوع الملف (ضغط تلقائي) ، وستكون النتائج على النحو التالي:

أولاً ، دعنا نتحقق من العمل بدون تشفير:

النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup

ساعات العمل:

تشغيل 1
تشغيل 2
تشغيل 3

4m6s
4m10s
4m5s

56s
58s
54s

1m26s
1m34s
1m30s

إذا قمت بتمكين ترخيص المستودع (وضع المصادقة) ، فستكون النتائج قريبة:

النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup

ساعات العمل:

تشغيل 1
تشغيل 2
تشغيل 3

4m11s
4m20s
4m12s

1m0s
1m3s
1m2s

1m30s
1m34s
1m31s

عند تفعيل تشفير aes ، لم تتدهور النتائج كثيرًا:

النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup

تشغيل 1
تشغيل 2
تشغيل 3

4m55s
5m2s
4m58s

1m0s
1m2s
1m0s

1m49s
1m50s
1m50s

وإذا قمت بتغيير aes إلى blake ، فسوف يتحسن الوضع تمامًا:

النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup

ساعات العمل:

تشغيل 1
تشغيل 2
تشغيل 3

4m33s
4m43s
4m40s

59s
1m0s
1m0s

1m38s
1m43s
1m40s

كما في حالة zbackup ، كان حجم المستودع 13 غيغابايت وحتى أقل قليلاً ، وهو أمر متوقع بشكل عام. لقد كنت سعيدًا جدًا بوقت التشغيل ، فهو قابل للمقارنة بالحلول القائمة على librsync ، مما يوفر المزيد من الفرص. لقد سررت أيضًا بالقدرة على تعيين معلمات مختلفة من خلال متغيرات البيئة ، مما يعطي ميزة خطيرة للغاية عند استخدام borgbackup في الوضع التلقائي. لقد سررت أيضًا بالحمل أثناء النسخ الاحتياطي: استنادًا إلى حمل المعالج ، يعمل borgbackup في مؤشر ترابط واحد.

لم تكن هناك سلبيات خاصة عند استخدامه.

اختبار restic

على الرغم من حقيقة أن restic هو حل جديد إلى حد ما (عُرف المرشحان الأولان منذ عام 2 وما بعده) ، إلا أنه يتمتع بخصائص جيدة جدًا. مكتوب في Go.

بالمقارنة مع zbackup ، فإنه يعطي بالإضافة إلى ذلك:

  • التحقق من سلامة المستودع (بما في ذلك التحقق في الأجزاء).
  • قائمة ضخمة من البروتوكولات والموفرين المدعومين لتخزين النسخ الاحتياطية ، بالإضافة إلى دعم rclone - rsync للحلول السحابية.
  • مقارنة نسختين احتياطيتين مع بعضهما البعض.
  • تركيب مستودع بالصمامات.

بشكل عام ، قائمة الميزات قريبة جدًا من borgbackup ، وأحيانًا أكثر ، وأحيانًا أقل. من الميزات - عدم القدرة على تعطيل التشفير ، وبالتالي سيتم دائمًا تشفير النسخ الاحتياطية. دعونا نرى عمليًا ما يمكن استخراجه من هذا البرنامج:

النتائج كما يلي:

النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup

ساعات العمل:

تشغيل 1
تشغيل 2
تشغيل 3

5m25s
5m50s
5m38s

35s
38s
36s

1m54s
2m2s
1m58s

النتائج قابلة للمقارنة أيضًا بالحلول المستندة إلى rsync ، وبشكل عام ، تكون قريبة جدًا من borgbackup ، لكن حمل المعالج أعلى (تعمل خيوط متعددة) وسن المنشار.

على الأرجح ، يعتمد البرنامج على أداء النظام الفرعي للقرص على خادم التخزين ، كما كان الحال مع rsync. كان حجم المستودع 13 غيغابايت ، مثل zbackup أو borgbackup ، ولم تكن هناك عيوب واضحة عند استخدام هذا الحل.

النتائج

في الواقع ، حصل جميع المرشحين على نتائج متشابهة ، ولكن بأسعار مختلفة. أثبت borgbackup أنه الأفضل ، أبطأ قليلاً - restic ، zbackup ، ربما ، يجب ألا تبدأ في الاستخدام ،
وإذا كان قيد الاستخدام بالفعل ، فحاول تغييره إلى borgbackup أو restic.

النتائج

يبدو أن Restic هو الحل الأكثر نجاحًا ، لأنه إنه صاحب أفضل نسبة من القدرات إلى السرعة ، لكن في الوقت الحالي لن نتسرع في الاستنتاجات العامة.

Borgbackup ليس أسوأ من حيث المبدأ ، ولكن من الأفضل استبدال zbackup. ومع ذلك ، لا يزال من الممكن استخدام قاعدة zbackup 3-2-1 لجعلها تعمل. على سبيل المثال ، بالإضافة إلى أدوات النسخ الاحتياطي المستندة إلى (lib) rsync.

إعلان

النسخ الاحتياطي ، الجزء 1: سبب الحاجة إلى النسخ الاحتياطي ، نظرة عامة على الأساليب والتقنيات
الجزء الثاني من النسخ الاحتياطي: مراجعة واختبار أدوات النسخ الاحتياطي المستندة إلى rsync
جزء النسخ الاحتياطي 3: مراجعة واختبار الازدواجية والنسخ
النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup
الجزء الخامس من النسخ الاحتياطي: اختبار باكولا وفايم النسخ الاحتياطي لنظام لينكس
جزء النسخ الاحتياطي 6: مقارنة أدوات النسخ الاحتياطي
جزء النسخ الاحتياطي 7: الاستنتاجات

كاتب المشاركة: بافل ديمكوفيتش

المصدر: www.habr.com

إضافة تعليق