الصفحة الرئيسية » howto » دليل غير المبتدئين لمزامنة البيانات مع Rsync

    دليل غير المبتدئين لمزامنة البيانات مع Rsync

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

    تحذير: المتقدم المهوسون فقط

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

    تشغيل rsync على ويندوز

    أولاً ، دعنا نحصل على قارئات Windows على نفس الصفحة مثل معلمي Linux لدينا. على الرغم من أن rsync مصمم للتشغيل على أنظمة Unix-like ، فلا يوجد سبب يمنعك من استخدامه بسهولة على Windows. تنتج Cygwin واجهة برمجة تطبيقات Linux رائعة يمكننا استخدامها لتشغيل rsync ، لذا توجه إلى موقعها على الويب وقم بتنزيل الإصدار 32 بت أو 64 بت ، بناءً على جهاز الكمبيوتر الخاص بك.

    التثبيت بسيط. يمكنك الاحتفاظ بجميع الخيارات في قيمها الافتراضية حتى تصل إلى شاشة "تحديد الحزم".

    الآن تحتاج إلى القيام بنفس الخطوات لـ Vim و SSH ، لكن الحزم ستبدو مختلفة قليلاً عندما تختارها ، لذا إليك بعض لقطات الشاشة:

    تثبيت Vim:

    تثبيت SSH:

    بعد أن تقوم بتحديد هذه الحزم الثلاثة ، استمر في النقر فوق التالي حتى تنتهي من التثبيت. ثم يمكنك فتح Cygwin بالنقر فوق الرمز الذي وضعه المثبت على سطح المكتب.

    أوامر rsync: بسيطة للمتقدم

    الآن بعد أن يكون مستخدمو Windows على نفس الصفحة ، دعنا نلقي نظرة على أمر rsync بسيط ، ونوضح كيف أن استخدام بعض المفاتيح المتقدمة يمكن أن يجعلها معقدة بسرعة.

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

    rsync -a / home / geek / files / / mnt / usb / files /

    أو الطريقة التي ستظهر بها على جهاز كمبيوتر يعمل بنظام Windows باستخدام Cygwin:

    rsync -a / cygdrive / c / files / / cygdrive / e / files /

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

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

    rsync -av --delete -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files /

    يرسل الأمر أعلاه ملفاتك إلى كمبيوتر آخر باستخدام عنوان IP الخاص بـ 10.1.1.1. فإنه حذف الملفات الدخيلة من الوجهة التي لم تعد موجودة في الدليل المصدر ، إخراج أسماء الملفات التي يتم نقلها حتى يكون لديك فكرة عن ما يجري ، ونفق rsync من خلال SSH على المنفذ 12345.

    ال -a -v -e - حذف مفاتيح هي بعض من أبسط والأكثر شيوعا ؛ يجب عليك بالفعل معرفة صفقة جيدة عنهم إذا كنت تقرأ هذا البرنامج التعليمي. دعونا ننتقل إلى بعض المفاتيح الأخرى التي يتم تجاهلها أحيانًا ولكنها مفيدة للغاية:

    --تقدم - يتيح لنا رمز التبديل هذا مشاهدة تقدم النقل لكل ملف. إنها مفيدة بشكل خاص عند نقل الملفات الكبيرة عبر الإنترنت ، ولكن يمكنها إخراج كمية لا معنى لها من المعلومات عند نقل الملفات الصغيرة عبر شبكة سريعة.

    أمر rsync مع --تقدم التبديل أثناء عمل نسخة احتياطية قيد التقدم:

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

    -P - هذا التبديل يجمع --تقدم و --جزئي, لذلك استخدمها بدلا من ذلك ، وسوف تجعل الأمر rsync الخاص بك قليلا.

    أو --ضغط - سيقوم رمز التبديل هذا بجعل بيانات ملف ضغط rsync أثناء نقلها ، مما يقلل من كمية البيانات التي يجب إرسالها إلى الوجهة. إنه في الواقع مفتاح شائع إلى حد ما ولكنه بعيد عن كونه أساسيًا ، ولكنه لا يفيدك إلا في عمليات النقل بين الاتصالات البطيئة ، ولا يفعل أي شيء للأنواع التالية من الملفات: 7z و avi و bz2 و deb و g و z iso و jpeg و jpg و mov، mp3، mp4، ogg، rpm، tbz، tgz، z، zip.

    أو --انسان قارئ - إذا كنت تستخدم --تقدم التبديل ، فأنت بالتأكيد تريد استخدام هذا واحد كذلك. وهذا هو ، إلا إذا كنت ترغب في تحويل وحدات البايت إلى ميغابايت على الطاير. ال التبديل يحول جميع الأرقام المنتجة إلى تنسيق قابل للقراءة ، بحيث يمكنك في الواقع فهم كمية البيانات التي يتم نقلها.

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

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

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

    --تشمل، من - مشابه ل --استبعاد من, ولكنه يرتبط بملف يحتوي على أدلة ومسارات ملفات البيانات التي تريد نسخها احتياطيًا.

    --احصائيات - ليس مفتاحًا مهمًا بأي شكل من الأشكال ، ولكن إذا كنت مسؤولاً عن النظام ، فيمكن أن يكون من السهل معرفة الإحصائيات التفصيلية لكل نسخة احتياطية ، حتى يمكنك مراقبة كمية حركة المرور التي يتم إرسالها عبر شبكتك.

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

    دعنا نلقي نظرة على أمر rsync الآن لدينا بعض المفاتيح الإضافية المضافة:

    rsync -avzhP - حذف --stats --log-file = / home / geek / rsynclogs / backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files /

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

    اللقطات الاحتياطية

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

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

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

    نتظاهر بأن لدينا نصًا برمجيًا احتياطيًا يعمل على النسخ الاحتياطي تلقائيًا لبياناتنا كل ساعتين. عندما يقوم rsync بذلك ، فإنه يسمي كل نسخة احتياطية في تنسيق: Backup-month-day-year-time.

    لذلك ، في نهاية اليوم العادي ، سيكون لدينا قائمة بالمجلدات في دليل الوجهة الخاص بنا على النحو التالي:

    عند عبور أي من هذه الأدلة ، سترى كل ملف من دليل المصدر تمامًا كما كان في ذلك الوقت. ومع ذلك ، لن يكون هناك نسخ مكررة في أي من المجلسين. rsync ينجز هذا مع استخدام hardlinking من خلال --الارتباط دست = DIR جدال.

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

    #! / بن / سحق

    #copy old time.txt to time2.txt

    نعم | cp ~ / backup / time.txt ~ / backup / time2.txt

    #overwrite ملف time.txt القديم بوقت جديد

    صدى "date +"٪ F-٪ I٪ p "'> ~ / backup / time.txt

    # جعل ملف السجل

    صدى ""> ~ / backup / rsync-'date + "٪ F-٪ I٪ p" '.

    الأمر #rsync

    rsync -avzhPR --chmod = Du = rwx، Dgo = rx، Fu = rw، Fgo = r --delete --stats --log-file = ~ / backup / rsync-'ate + "٪ F-٪ I٪ p "'. log - exclude-from' ~ / exclude.txt '--link-dest = / home / geek2 / files /' cat ~ / backup / time2.txt '-e' ssh -p 12345 '/ home / geek / files / [email protected]: / home / geek2 / files / 'date + "٪ F-٪ I٪ p"' /

    # لا تنس أن scp ملف السجل ووضعها مع النسخة الاحتياطية

    scp -P 12345 ~ / backup / rsync-'cat ~ / backup / time.txt'.log [email protected]: / home / geek2 / files / 'cat ~ / backup / time.txt' / rsync-'cat ~ / الاحتياطية / time.txt'.log

    من شأنه أن يكون لقطة نموذجية rsync لقطة. في حال فقدناك في مكان ما ، دعنا نفصله قطعة قطعة:

    يقوم السطر الأول من النص البرمجي بنسخ محتويات time.txt إلى time2.txt. إن أنبوب yes هو التأكيد على أننا نريد استبدال الملف. بعد ذلك ، نأخذ الوقت الحالي ونضعه في time.txt. سوف تأتي هذه الملفات في متناول اليدين في وقت لاحق.

    السطر التالي يجعل ملف سجل rsync ، تسمية عليه rsync-date.log (حيث يكون التاريخ هو التاريخ والوقت الفعلي).

    الآن ، أمر rsync المعقد الذي قمنا بتحذيرك بشأنه:

    -avzhPR، -e، - حذف، --stats، --log-file، --exclude-from، --link-dest - فقط المفاتيح التي تحدثنا عنها سابقًا انتقل لأعلى إذا كنت بحاجة إلى تنشيط.

    --شمود = دو = RWX، DGO = آر إكس، فو = RW، Fgo = ص - هذه هي أذونات الدليل الوجهة. بما أننا نجعل هذا الدليل في منتصف نص rsync الخاص بنا ، نحتاج إلى تحديد الأذونات حتى يتمكن مستخدمينا من كتابة الملفات إليه.

    استخدام أوامر التاريخ والقطة

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

    يتم تحديد ملف السجل على النحو التالي:

    ~ / backup / rsync-'date + "٪ F-٪ I٪ p" '

    بدلاً من ذلك ، يمكننا تحديده على أنه:

    ~ / backup / rsync-'cat ~ / backup / time.txt'.log

    في كلتا الحالتين ، و --ملف تسجيل يجب أن يكون الأمر قادراً على العثور على ملف السجل القديم الذي تم إنشاؤه مسبقًا ثم الكتابة إليه.

    تم تحديد ملف وجهة الوصلة على النحو التالي:

    --link-dest = / home / geek2 / files / 'cat ~ / backup / time2.txt'

    هذا يعني أن --الارتباط دست يتم إعطاء الأمر دليل النسخ الاحتياطي السابق. إذا كنا ندير نسخًا احتياطيًا كل ساعتين ، وفي الساعة 4:00 مساءً في وقت تشغيل هذا البرنامج النصي ، --الارتباط دست يبحث الأمر عن الدليل الذي تم إنشاؤه في الساعة 2:00 مساءً وينقل البيانات التي تغيرت منذ ذلك الحين (إن وجدت).

    للتكرار ، ولهذا السبب يتم نسخ time.txt إلى time2.txt في بداية البرنامج النصي ، لذلك --الارتباط دست يمكن أن يشير الأمر إلى هذا الوقت لاحقًا.

    يتم تحديد دليل الوجهة على النحو التالي:

    [email protected]: / home / geek2 / files / 'date + "٪ F-٪ I٪ p"

    يقوم هذا الأمر ببساطة بوضع الملفات المصدر في دليل يحتوي على عنوان التاريخ والوقت الحاليين.

    وأخيرًا ، نتأكد من وضع نسخة من ملف السجل داخل النسخة الاحتياطية.

    scp -P 12345 ~ / backup / rsync-'cat ~ / backup / time.txt'.log [email protected]: / home / geek2 / files / 'cat ~ / backup / time.txt' / rsync-'cat ~ / الاحتياطية / time.txt'.log

    نحن نستخدم نسخة آمنة على المنفذ 12345 لأخذ سجل rsync ووضعه في الدليل المناسب. لتحديد ملف السجل الصحيح والتأكد من أنه ينتهي في المكان الصحيح ، يجب الإشارة إلى ملف time.txt عبر الأمر cat. إذا كنت تتساءل عن السبب في أننا قررنا استخدام time.txt بدلاً من مجرد استخدام الأمر date ، فذلك لأن الكثير من الوقت يمكن أن يكون قد تم عرضه أثناء تشغيل الأمر rsync ، وذلك للتأكد من أن لدينا الوقت المناسب ، الوثيقة النصية التي أنشأناها في وقت سابق.

    التشغيل الآلي

    استخدم Cron على Linux أو برنامج جدولة المهام على Windows لأتمتة البرنامج النصي rsync الخاص بك. هناك شيء واحد عليك توخي الحذر منه هو التأكد من إنهاء أية عمليات rsync قيد التشغيل حاليًا قبل متابعة عملية جديدة. يبدو أن برنامج جدولة المهام يغلق أي مثيلات قيد التشغيل تلقائيًا ، ولكن بالنسبة لنظام التشغيل Linux ، يجب أن تكون أكثر إبداعًا قليلاً.

    يمكن لمعظم توزيعات Linux استخدام الأمر pkill ، لذلك تأكد من إضافة التالي إلى بداية البرنامج النصي rsync:

    pkill -9 rsync

    التشفير

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

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

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

    لهذا السبب ، من الأفضل / الأسهل استخدام بعض أنواع تشفير القرص ، مثل BitLocker لـ Windows أو dm-crypt لـ Linux. بهذه الطريقة ، تتم حماية بياناتك في حالة السرقة ، ولكن يمكن نقل الملفات باستخدام rsync ولن يعيق التشفير الخاص بك أدائها. هناك خيارات أخرى متاحة تعمل بطريقة مشابهة لـ rsync أو حتى تنفذ شكلاً من أشكالها ، مثل Duplicity ، ولكنها تفتقر إلى بعض الميزات التي توفرها rsync.

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