Duplicity – إنشاء نسخ احتياطية تدريجية مشفرة في نظام Linux

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

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

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

هذا قوله، دعنا نبدأ.

تثبيت أداة نسخ الاحتياطي Duplicity في Linux

لتثبيت Duplicity في توزيعات Linux مبنية على RHEL، ستحتاج إلى تمكين مستودع EPEL أولاً (يمكنك تجاهل هذه الخطوة إذا كنت تستخدم Fedora بنفسها).على RHEL 9:

على RHEL 9:

subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

على CentOS 9, AlmaLinux 9, Rocky Linux 9:

dnf config-manager --set-enabled crb
dnf install epel-release

على RHEL 8:

subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

على CentOS 9, AlmaLinux 9, Rocky Linux 9:

dnf config-manager --set-enabled powertools
dnf install epel-release

ثم قم بتشغيل،

dnf install duplicity

لـ توزيعات مبنية على Debian مثل Ubuntu و Linux Mint.

sudo apt update 
sudo apt install duplicity

من الناحية النظرية، يتم دعم العديد من طرق الاتصال بخادم الملفات على الرغم من أن ssh/scp/sftp، الوصول إلى الملفات المحلية، rsync، ftp، HSI، WebDAV، و Amazon S3 قد تم اختبارها في الممارسة فقط حتى الآن.

بمجرد الانتهاء من التثبيت، سنستخدم sftp حصريًا في مختلف السيناريوهات، سواء للنسخ الاحتياطي أو استعادة البيانات.

يتكون بيئة الاختبار الخاصة بنا من صندوق RHEL 8 (الذي يجب تأمينه) وآلة Debian 11 (خادم النسخ الاحتياطي).

إنشاء مفاتيح SSH لتسجيل الدخول بدون كلمة مرور إلى الخادم البعيد

لنبدأ بإنشاء مفاتيح SSH في جهازنا RHEL ونقلها إلى خادم النسخ الاحتياطي Debian.

إذا كنت تستخدم SSH على منفذ مختلف، فإن الأمر أدناه يفترض أن يكون البرنامج الخادم sshd يستمع على المنفذ XXXXX في خادم Debian. قم بتبديل AAA.BBB.CCC.DDD بعنوان IP الفعلي للخادم البعيد.

ssh-keygen -t rsa
ssh-copy-id [email protected]
ssh-copy-id -p XXXXX [email protected]  

ثم يجب عليك التأكد من أنه يمكنك الاتصال بخادم النسخ الاحتياطي دون استخدام كلمة مرور:

ssh [email protected]
SSH Passwordless Remote Login

الآن نحتاج إلى إنشاء مفاتيح GPG التي ستُستخدم لتشفير وفك تشفير بياناتنا:

gpg2 --full-gen-key

ستُطلب منك إدخال:

  • نوع المفتاح
  • حجم المفتاح
  • مدة صلاحية المفتاح
  • A passphrase
Create GPG RSA Key in Linux

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

بمجرد إنشاء المفاتيح، يمكنك عرضها كما يلي:

gpg --list-keys
List GPG Keys

يُعرف السلسلة المظللة باللون الأصفر أعلاه باسم معرف المفتاح العام، وهو الوسيط المطلوب لتشفير ملفاتك.

إنشاء نسخة احتياطية لنظام Linux باستخدام Duplicity

للبدء ببساطة، دعنا نقوم بنسخ احتياطية فقط للمجلد /var/log، باستثناء /var/log/anaconda و /var/log/sa.

نظرًا لأن هذه هي نسختنا الاحتياطية الأولى، ستكون كاملة. ستقوم التشغيلات التالية بإنشاء نسخ احتياطية تدريجية (ما لم نُضف الخيار الكامل بدون شرطات مباشرة بجانب Duplicity في الأمر أدناه):

PASSPHRASE="tecmint" duplicity --encrypt-key 115B4BB13BC768B8B2704E5663C429C3DB8BAD3B --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://[email protected]//backups/rhel8
OR
PASSPHRASE="YourPassphraseHere" duplicity --encrypt-key YourPublicKeyIdHere --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://root@RemoteServer:XXXXX//backups/rhel8

تأكد من عدم تفويت الشرطتين المائلتين في الأمر أعلاه! تُستخدم للإشارة إلى مسار مطلق لمجلد يُسمى /backups/rhel8 في صندوق النسخ الاحتياطي وهو المكان الذي ستُخزن فيه ملفات النسخ الاحتياطية.

استبدل YourPassphraseHere، YourPublicKeyIdHere، و RemoteServer بكلمة المرور التي أدخلتها سابقًا، ومعرف المفتاح العام GPG، وبعنوان IP أو اسم المضيف لخادم النسخ الاحتياطي، على التوالي.

يجب أن يكون إخراجك مشابهًا للصورة التالية:

Create a Backup using Duplicity

تشير الصورة أعلاه إلى أن إجمالي 86.3 ميجابايت تم نسخها في 3.22 ميجابايت في الوجهة. دعنا ننتقل إلى خادم النسخ الاحتياطي للتحقق من النسخ الاحتياطية التي تم إنشاؤها حديثًا:

Confirm Linux Backup Files

A second run of the same command yields a much smaller backup size and time:

Compress Backup

استعادة النسخ الاحتياطية لنظام Linux باستخدام Duplicity

لاستعادة ملف بنجاح، أو مجلد مع محتوياته، أو النسخ الاحتياطي بأكمله، يجب ألا يكون المكان الوجهة موجودًا (لن يقوم Duplicity بالكتابة فوق ملف أو مجلد موجود بالفعل). للتوضيح، دعنا نحذف سجل cron في صندوق CentOS:

rm -f /var/log/cron

الصيغة لاستعادة ملف واحد من الخادم عن بعد هي:

PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore filename sftp://root@RemoteHost//backups/rhel8 /where/to/restore/filename

حيث،

  • اسم الملف هو الملف الذي سيتم استخراجه، بمسار نسبي إلى الدليل الذي تم حفظه
  • /المكان/الذي/نريد/استعادته هو الدليل في النظام المحلي الذي نريد استعادة الملف إليه.

في حالتنا، لاستعادة سجل الكرون الرئيسي من النسخ الاحتياطي عن بُعد، نحتاج إلى تشغيل:

PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore cron sftp://[email protected]:XXXXX//backups/rhel8 /var/log/cron

يجب استعادة سجل الكرون إلى الوجهة المرغوبة.

بالمثل، لا تتردد في حذف دليل من /var/log واستعادته باستخدام النسخ الاحتياطي:

rm -rf /var/log/mail
PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore mail sftp://[email protected]:XXXXX//backups/rhel8 /var/log/mail

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

استخدام أمر الاستعادة Duplicity

يمكنك في أي وقت عرض قائمة الملفات المؤرشفة باستخدام الأمر التالي:

duplicity list-current-files sftp://[email protected]:XXXXX//backups/rhel8

حذف النسخ الاحتياطية القديمة بعمر أكبر من 6 أشهر:

duplicity remove-older-than 6M sftp://[email protected]:XXXXX//backups/rhel8

استعادة الملف داخل الدليل جاكانيبا كما كان قبل 2 أيام و 12 ساعة:

duplicity -t 2D12h --file-to-restore gacanepa/myfile sftp://[email protected]:XXXXX//remotedir/backups /home/gacanepa/myfile

في الأمر الأخير، يمكننا رؤية مثال على استخدام الفاصل الزمني (كما هو محدد بواسطة -t): سلسلة من الأزواج حيث يتكون كل منها من رقم تليه أحد الحروف ث، د، س، ي، أ، ش، أو س (مشيرًا إلى ثوانٍ، دقائق، ساعات، أيام، أسابيع، أشهر، أو سنوات على التوالي).

الملخص

في هذا المقال، قد شرحنا كيفية استخدام Duplicity، أداة النسخ الاحتياطي التي توفر التشفير للملفات والمجلدات بشكل افتراضي. أوصي بشدة بأن تلقي نظرة على مشروع duplicity على موقع الويب لمزيد من التوثيق والأمثلة.

لقد قدمنا صفحة الرجل لـ duplicity بتنسيق PDF لراحتك في القراءة، وهو أيضًا دليل مرجعي كامل.

لا تتردد في إخبارنا إذا كان لديك أي أسئلة أو تعليقات.

Source:
https://www.tecmint.com/duplicity-create-encrypted-incremental-linux-backup/