
Duplicity هو أداة قوية مفتوحة المصدر للنسخ الاحتياطي تسمح بإجراء نسخ احتياطي مشفرة وتزايدية. يدعم مجموعة متنوعة من البنى الخلفية لتخزين بيانات النسخ الاحتياطي بما في ذلك أنظمة الملفات المحلية أو البعيدة ، FTP ، SSH ، WebDAV وخدمات التخزين السحابي. يستخدم Duplicity GnuPG لتشفير وتوقيع أرشيفات النسخ الاحتياطي.
في هذا الدليل الشامل ، سنغطي كيفية تثبيت وتكوين Duplicity ثم استخدامه لإعداد النسخ الاحتياطي الآلية على لينكس.
تثبيت Duplicity
Duplicity متاح في المستودعات الافتراضية لمعظم توزيعات لينكس.
على دبيان/أوبنتو
$ sudo apt update
$ sudo apt install duplicityعلى CentOS/RHEL
$ sudo yum install epel-release
$ sudo yum update
$ sudo yum install duplicityعلى أرخ لينكس
$ sudo pacman -S duplicityعلى فيدورا
$ sudo dnf install duplicityبالنسبة لتوزيعات لينكس الأخرى ، راجع مدير الحزم الخاص بك.
بمجرد التثبيت ، تحقق من توفر Duplicity عن طريق التحقق من الإصدار:
$ duplicity --versionإنشاء مفاتيح GPG
يستخدم Duplicity مفاتيح GnuPG لتشفير و/أو توقيع أرشيفات النسخ الاحتياطي. نحتاج إلى إنشاء زوج مفاتيح لهذا الغرض.
استورد حزمة أدوات GPG إذا لم يتم تثبيتها بالفعل:
$ sudo apt install gnupgأنشئ زوج مفاتيح جديد باستخدام تشفير RSA.
$ gpg --gen-keyاختر نوع المفتاح على أنه “RSA و RSA” بحجم 4096 بت. اضبط فترة انتهاء الصلاحية إذا لزم الأمر.
قدِّم تفاصيلك لمعرف المستخدم مثل الاسم والبريد الإلكتروني وما إلى ذلك. أضف عبارة مرور آمنة للمفاتيح. سيتم إنشاء زوج مفاتيح عامة/خاصة لك.
اعرض المفاتيح لإيجاد معرف المُعرّف:
$ gpg --list-keysصدّر المفتاح العام للنسخ الاحتياطي. استبدل معرف المُعرّف بشكل مناسب:
$ gpg -a --export 1234ABCD > public.gpgيحتاج المفتاح العام إلى نقله إلى أي تخزين خلفي بعيد تعتزم استخدامه مثل SSH أو التخزين السحابي. يجب الاحتفاظ بالمفتاح الخاص بأمان على النظام المحلي لأداء النسخ الاحتياطي.
تكوين Duplicity
يدعم Duplicity مجموعة متنوعة من مخازن البيانات الخلفية مثل المحلية ، SSH ، FTP ، WebDAV وما إلى ذلك. سننظر في تكوين بعض البنى الخلفية الشائعة:
نظام ملفات محلي
للنسخ الاحتياطي إلى دليل محلي ، اضبط عنوان URL لوجهة النسخ الاحتياطي مثل:
file:///home/user/backups SSH
للنسخ الاحتياطي إلى نظام بعيد عبر SSH:
ssh://user@host//path/to/backupيفترض ذلك أنك قمت بإعداد دخول SSH بين الأنظمة.
Amazon S3
للنسخ الاحتياطي إلى دلو Amazon S3:
s3://s3-bucket-name[/prefix]يمكن توفير بيانات اعتماد S3 عبر ملف ~/.boto config أو متغيرات البيئة.
انظر وثائق Duplicity S3 Backend للتفاصيل.
Google Cloud Storage
للنسخ الاحتياطي إلى Google Cloud Storage:
gs://cloud-storage-bucket[/prefix] يمكن القيام بالمصادقة بعدة وسائل بما في ذلك ملفات حساب الخدمة ، ملفات JSON ADC أو متغيرات البيئة.
راجع قسم GCS Backend في التوثيق للمزيد من التفاصيل.
Swift
للنسخ الاحتياطي إلى حاوية OpenStack Swift:
swift://container_name[/prefix]يتم المصادقة عبر متغيرات بيئة. راجع وثائق Swift Backend.
WebDAV
لاستخدام خادم WebDAV كبنية خلفية:
webdav[s]://hostname[:port]/path سيطلب Duplicity اسم المستخدم/كلمة المرور عند الحاجة.
راجع واجهة برمجة تطبيقات WebDAV للتفاصيل.
بهذه الطريقة ، يمكنك تكوين النسخ الاحتياطي إلى مجموعة متنوعة من نقاط النهاية للتخزين. الآن نحن جاهزون لإنشاء أول نسخة احتياطية.
إنشاء نسخ احتياطية
مع تكوين عنوان URL للبنية الخلفية ، يمكننا الآن إجراء نسخة احتياطية كاملة.
ضع متغير البيئة التالي لتجنب المطالبات التفاعلية:
export PASSPHRASE=your_passphraseثم قم بتشغيل نسخة احتياطية كاملة:
$ duplicity /path/to/source dir file:///path/to/destinationسيقوم هذا بالنسخ الاحتياطي المتكرر لدليل /path/to/source إلى الوجهة المحلية /path/to/destination.
للنسخ الاحتياطي إلى موقع بعيد عبر SSH:
$ duplicity /path/to/source ssh://user@host//backup/pathللنسخ الاحتياطي إلى التخزين السحابي:
$ duplicity /local/source s3://s3-bucket[/prefix]سيطلب Duplicity أي بيانات اعتماد مطلوبة مثل كلمة مرور SSH أو مفاتيح سرية لـ AWS. سيتم تشفير النسخة الاحتياطية وتخزينها في الوجهة.
للنسخ الاحتياطي لمجلدات معينة فقط ، حددها كمسارات تتضمن. على سبيل المثال:
$ duplicity include /path/to/folders1 include /path/to/folders2 /path/to/source file:////path/to/destinationسيقوم هذا فقط بالنسخ الاحتياطي للمجلدات المحددة من المصدر.
بعد النسخة الاحتياطية الكاملة الأولية ، ستكون النسخ الاحتياطية اللاحقة تزايدية. هذا يوفر الوقت ومساحة التخزين. يستخدم Duplicity librsync لتحديد المحتوى المعدل بكفاءة.
لإجبار نسخة احتياطية كاملة بدلاً من التزايدية ، استخدم خيار --full-if-older-than:
$ duplicity --full-if-older-than 60D /path/to/source ssh://user@host//path/to/backup سيقوم هذا بإجراء نسخة احتياطية كاملة إذا كانت آخر نسخة احتياطية كاملة أقدم من 60 يومًا.
جدولة النسخ الاحتياطية باستخدام Cron
يمكننا أتمتة نسخ Duplicity الاحتياطية باستخدام وظائف Cron.
افتح crontab للتحرير:
$ crontab -eأضف جدولة cron مثل:
0 1 * * * /usr/bin/duplicity /path/to/source ssh://user@host//backup/pathسيقوم هذا بتشغيل وظيفة النسخ الاحتياطي يوميًا الساعة 1 صباحًا.
للنسخ الاحتياطية الأسبوعية:
0 1 * * 0 /usr/bin/duplicity /path/to/source ssh://user@host//backup/pathسيتم تشغيل هذا النسخ الاحتياطي كل أحد الساعة 1 صباًحا.
وبالمثل ، يمكنك جدولة نسخ احتياطية شهرية ، سنوية ، وما إلى ذلك.
لمزيد من التحكم ، يمكنك تشغيل وظائف كاملة وتزايدية منفصلة:
0 1 * * * /usr/bin/duplicity --full-if-older-than 30D /path/to/source ssh://user@host//path/to/full/backup
0 */4 * * * /usr/bin/duplicity /path/to/source ssh://user@host//path/to/incr/backupسيقوم هذا بتشغيل نسخة احتياطية كاملة في اليوم الأول من الشهر وتزايدية كل 4 ساعات.
تذكر إعادة توجيه الإخراج إذا كانت المهام تنتج الكثير من المخرجات لتجنب البريد الإلكتروني العشوائي.
استعادة النسخ الاحتياطية
لاستعادة آخر إصدار من النسخة الاحتياطية:
$ duplicity restore ssh://user@host//backup/path /local/restore/pathسيقوم هذا باستعادة النسخة الاحتياطية المتوفرة في الموقع البعيد إلى المسار المحلي المحدد.
لاستعادة إصدار سابق من تاريخ محدد:
$ duplicity restore --time 2020-01-01T12:30:00 ssh://user@host//backup/path /local/restore/pathقائمة جميع إصدارات النسخ الاحتياطية المخزنة:
$ duplicity collection-status ssh://user@host//backup/pathحذف النسخ الاحتياطية القديمة:
$ duplicity remove-older-than 6M --force ssh://user@host//backup/pathسيقوم هذا بحذف جميع إصدارات النسخ الاحتياطية الأقدم من 6 أشهر.
بهذه الطريقة ، يمكنك إدارة أرشيفات النسخ الاحتياطي الخاصة بك. استعادة الإصدارات المحددة عند الحاجة.
Duplicity على Mac مع Homebrew
على MacOS ، يمكن تثبيت Duplicity عبر Homebrew:
$ brew install duplicityيظل الاستخدام كما هو على لينكس:
$ duplicity /path/to/source /path/to/destinationجدولة نسخ احتياطي cron بنفس الطريقة باستخدام crontab الأصلي:
$ crontab -eDuplicity على Windows
يمكن تثبيت Duplicity على Windows باستخدام بيئة لينكس Cygwin.
أولاً، ثبّت Cygwin مع حزم rsync و python.
ثم قم بتثبيت Duplicity عبر pip:
C:\> pip install duplicityالآن يمكنك استخدام Duplicity للنسخ الاحتياطي للملفات محليًا أو إلى مشاركات Windows عن بُعد:
C:\> duplicity C:\Users\user\Documents E:\Backupsأتمتة النسخ الاحتياطية المجدولة باستخدام جدول المهام.
تتوفر أيضًا نسخة Windows الأصلية من Duplicity تسمى cwDup ، على الرغم من تقليص الوظيفة.
أفضل الممارسات لـ Duplicity
فيما يلي بعض أفضل الممارسات لاتباعها عند استخدام Duplicity:
- النسخ الاحتياطي إلى تخزين بعيد أو غير متصل للحماية من البرمجيات الخبيثة وفدية البرامج الخبيثة وما إلى ذلك.
- شفرة ووقع النسخ الاحتياطية لضمان الأمان. حماية مفتاحك الخاص GPG بعبارة مرور.
- التحقق من صحة النسخ الاحتياطية عن طريق إجراء استعادات دورية.
- الاحتفاظ بإصدارات متعددة ولكن تنظيف النسخ الاحتياطية القديمة لتوفير المساحة.
- قم بتخزين البيانات الوصفية مثل مفاتيح GPG والتكوينات بشكل منفصل عن بيانات النسخ الاحتياطي.
- اختبر أن النسخ الاحتياطية تعمل قبل الاعتماد عليها للاستعادة.
- أتمتة حسب جدول زمني ولكن قم أيضًا بالنسخ الاحتياطي يدويًا بعد التغييرات المهمة.
- أرسل سجلات/إشعارات النسخ الاحتياطي لمراقبة حالة المهمة.
- قسم المجلدات الكبيرة عبر محركات أقراص متعددة للحصول على إنتاجية أفضل.
- التقاط لقطات النسخ الاحتياطي لتجنب النسخ الاحتياطي للملفات المفتوحة في حالة غير مستقرة.
- عزل النسخ الاحتياطية عن الشبكة بفجوة هوائية للحصول على أقصى أمان.
الخلاصة
Duplicity هو حل مفتوح المصدر قوي للنسخ الاحتياطية المشفرة التزايدية. إنه يوفر الكثير من المرونة في خيارات تخزين البنية الخلفية. يسمح استخدام تشفير GPG بنقل وتخزين آمنين لأرشيفات النسخ الاحتياطي.
مع هذا الدليل ، يجب أن تكون الآن قادرًا على إعداد وظائف النسخ الاحتياطي الآلية لـ Duplicity إلى موقع محلي أو بعيد. يحمي تخزين النسخ الاحتياطية خارج الموقع أو في التخزين السحابي من الكوارث المحلية ويوفر الاحتياطي.
يضمن الاختبار والتحقق المنتظم من النسخ الاحتياطية حماية بياناتك عند الحاجة للاستعادة. يساعد اتباع أفضل الممارسات حول الأمان والتحقق والمراقبة في الحفاظ على نسخ احتياطية قوية.
