لينكس rsync
يعد الأمر أداة قوية لنسخ الملفات ومزامنة المجلدات. فيما يلي عشر حالات استخدام شائعة يمكنك استخدامها بشكل جيد على أنظمتك الخاصة.
ال rsync
تقوم الأداة بنسخ الملفات والدلائل بين جهازين كمبيوتر. وهي تستخدم خوارزمية متطورة يقوم بفحص أشجار الدليل للعثور على الملفات الموجودة على الكمبيوتر المصدر والتي لا توجد على الكمبيوتر الوجهة. يتم نقل هذه الملفات إلى الكمبيوتر الوجهة. ما الذي يجعل
rync
إنه ذكي للغاية حيث يمكنه معرفة أجزاء الملفات الموجودة التي تم تعديلها، ويرسل فقط الأجزاء التي تم تغييرها.
يمكنك استخدام rsync
نسخ الملفات إلى موقع مختلف على القرص الصلب الخاص بك، أو إلى قرص صلب مختلف في نفس الكمبيوتر، أو إلى محرك أقراص USB متصل خارجيًا، أو أي موقع آخر يمكن الوصول إليه عبر الشبكة.
وعلاوة على ذلك، rsync
يمكن اختياريًا الاحتفاظ بالروابط الرمزية والروابط الثابتة وبيانات التعريف الخاصة بالملفات مثل ملكية الملف والأذونات وأوقات الوصول. لدعم كل هذه الوظائف، rsync
يحتوي على العديد من الخيارات، ويستغرق فهمها جميعًا وقتًا. لقد جمعنا هذه الأمثلة العشرة لمساعدتك على البدء. لقد كتبنا بالفعل عن إجراء عمليات النسخ الاحتياطي باستخدام rsync
لذلك نحن نركز على استخدامات أخرى هنا.
بالنسبة لجميع خياراتها العديدة، فإن هيكل rsync
الأمر بسيط. نحتاج إلى توفير المصدر والوجهة والخيارات التي نريد استخدامها. ربما تجد أن rsync
تم تثبيته بالفعل على جهاز الكمبيوتر الذي يعمل بنظام Linux الخاص بك – كان كذلك، على جميع أجهزة الاختبار الخاصة بنا – ولكن إذا لم يكن كذلك، فسيكون بالتأكيد في مستودعات التوزيع الخاص بك.
1. نسخ الملفات إلى دليل مختلف
فيما يلي مثال بسيط لبدء العمل. سنقوم بنسخ الملفات من دليل “project-files” إلى دليل “Documents”. نستخدم خيارين، الأول هو -a
خيار (الأرشيف) و -v
خيار (verbose). يخبرك خيار verbose rsync
لشرح ما يفعله أثناء قيامه به.
archive
يحافظ الخيار على ملكية الملف وبعض العناصر الأخرى التي سننظر إليها قريبًا.
تنسيق الأمر هو
options source-location destination-location
.
rsync -av /home/dave/project-files/ /home/dave/Documents/
استخدام ls
يظهر في مجلد “المستندات” أن الملفات تم نسخها.
بينما rsync
يعمل، يتم سرد الملفات أثناء نسخها. يُقال لنا:
- عدد البايتات المرسلة.
- عدد البايتات المستلمة. قبل نقل الملف،
rsync
يجب تحديد الملفات التي تحتاج إلى نقل. للقيام بذلك، يجب استرداد بعض المعلومات حول الملفات الموجودة على الوجهة بواسطةrsync
. توجد هذه المعلومات في البايتات المستلمة. - سرعة النقل.
- الحجم الإجمالي للملفات المنسوخة.
- “التسريع”. هذه هي نسبة الحجم الإجمالي مقسومًا على مجموع البايتات المرسلة والمستلمة. وكلما زاد هذا الرقم، زادت كفاءة النقل.
لقد قمنا بتعديل ملف النص في دليل المصدر وكررنا ذلك rsync
يأمر.
rsync -av /home/dave/project-files/ /home/dave/Documents/
هذه المرة، الملف الوحيد الذي يحتاج إلى التحديث هو ملف النص الذي قمنا بتعديله. يبلغ رقم التسريع الآن 30850. وهذا يوضح مدى كفاءة نسخ الجزء المعدل من هذا الملف الواحد، بدلاً من نسخ جميع الملفات.
ال -a
يمثل خيار (الأرشيف) في الواقع مجموعة من الخيارات الأخرى. وهو نفس استخدام كل هذه الخيارات:
- ر:العمل بشكل متكرر من خلال أشجار الدليل في الدليل المصدر ونسخها إلى الدليل الوجهة، وإنشائها إذا لم تكن موجودة هناك بالفعل.
- ل:نسخ الروابط الرمزية كروابط رمزية.
- ص:الحفاظ على أذونات الملف.
- ت:الحفاظ على أوقات تعديل الملف.
- ج:الحفاظ على أذونات المجموعة.
- ا:الحفاظ على ملكية الملف.
- د:نسخ الملفات الخاصة وملفات الأجهزة. يمكن أن تكون الملفات الخاصة عناصر تركز على الاتصالات ويتم التعامل معها مثل الملفات، مثل المقابس وأنابيب الدخول أولاً والخروج أولاً (FIFO). ملفات الأجهزة هي ملفات خاصة توفر الوصول إلى الأجهزة والأجهزة الزائفة.
هذه تركيبة مستخدمة بشكل متكرر rsync
يوفر -a
(الأرشيف) الخيار كطريقة مختصرة لاستدعاءهم جميعًا.
2. نسخ دليل إلى دليل مختلف
إذا نظرت إلى الصورة السابقة rsync
عند تنفيذ الأمر، سترى شرطة مائلة للأمام ” في مسار الملف الخاص بدليل المصدر. وهذا أمر مهم. فهو يخبرك rsync
لنسخ محتويات الدليل. إذا لم تقم بتوفير الشرطة المائلة اللاحقة للأمام، rsync
سيتم نسخ الدليل ومحتوياته.
rsync -av /home/dave/project-files /home/dave/Documents/
هذه المرة، تمت إضافة اسم الدليل إلى اسم الملف كما هو موضح. إذا نظرنا داخل دليل الوجهة، فسنرى أن مجلد المصدر قد تم نسخه مع الملفات الموجودة بداخله.
ls Documents/
ls Documents/project-files/
3. نسخ دليل إلى محرك أقراص مختلف
إن نسخ الملفات إلى موقع آخر على نفس القرص الصلب لا يوفر لك الحماية ضد فشل القرص. فإذا تعطل القرص الصلب، فستفقد نسخ المصدر والوجهة لتلك الملفات. إن نسخها إلى قرص صلب آخر يعد طريقة أكثر قوة لحماية بياناتك. كل ما نحتاج إلى القيام به هو توفير المسار الصحيح لمحرك الوجهة.
rsync -av /home/dave/project-files /run/mount/drive2
عند النظر إلى القرص الصلب الآخر، يظهر لنا الدليل والملفات التي تم نسخها إليه.
ls run/mount/drive2/project-files/
4. إجراء تشغيل تجريبي أولاً
قبل أن ننظر في كيفية rsync
يمكن أن يكون من المفيد حذف الملفات بالنسبة لنا، دعنا نلقي نظرة على كيفية القيام بذلك rsync
قم بإجراء تشغيل تجريبي.
في تشغيل جاف، rsync
يقوم بتنفيذ الإجراءات التي طلبناها، لكنه لا يقوم بها فعليًا. فهو يقدم تقريرًا عما كان ليحدث لو تم تنفيذ الأمر. وبهذه الطريقة، يمكننا التأكد من أن الأمر يقوم بالضبط بما نتوقعه.
لإجبار التشغيل التجريبي نستخدم --dry-run
خيار.
rsync -av --dry-run /home/dave/geocoder /run/mount/drive2
يتم سرد الملفات التي كان من المفترض أن يتم نسخها لنا، ونحصل على الإحصائيات المعتادة، متبوعة بالرسالة (DRY RUN)
حتى نعلم أنه لم يحدث شيء فعليا.
5. حذف الملفات الموجودة في دليل الوجهة
ال --delete
الخيار يقول rsync
لحذف الملفات والدلائل الموجودة في الدليل الوجهة والتي ليست موجودة في الدليل المصدر. وهذا يعني أن الدليل الوجهة سيكون نسخة طبق الأصل من الدليل المصدر. سنكون حذرين ونستخدم --dry-run
الخيار الأول.
rsync -av --delete --dry-run /home/dave/geocoder /run/mount/drive2
لقد تم إبلاغنا بأنه سيتم حذف ملفين. إذا كنا متأكدين من أننا لا نهتم بحذفهما، فيمكننا إزالة --dry-run
الخيار وتنفيذ الأمر حقيقيا.
rsync -av --delete /home/dave/geocoder /run/mount/drive2
هذه المرة يتم مزامنة محتويات الدلائل ويتم حذف الملفين الإضافيين.
6. حذف ملفات المصدر
يمكنك اختيار حذف ملفات المصدر بعد النقل الناجح، مما يجعل rsync
تعمل مثل النقل أكثر من النسخ. إذا لم يكن النقل ناجحًا، فلن يتم حذف ملفات المصدر. الخيار الذي نحتاج إلى استخدامه هو --remove-source-files
.
rsync -av --remove-source-files /home/dave/geocoder /run/mount/drive2
لاحظ أنه يمكن حذف الملفات حتى لو لم يتم نقل أي ملفات. وذلك لأنه إذا rsync
يتم التحقق من أن جميع الملفات موجودة بالفعل في دليل الوجهة ولا يوجد شيء آخر rsync
أن تفعل rsync
ويعتبر أن النقل ناجح.
أيضًا، rsync
يحذف فقط الملفات من دليل المصدر. ولا يحذف دليل المصدر ولا أي أدلة فرعية، بل يحذف الملفات الموجودة فيها فقط. يمكننا أن نرى ذلك باستخدام -R
خيار (متكرر) مع ls
، في دليل المصدر.
ls -R geocoder
7. نسخ الملفات إلى جهاز كمبيوتر بعيد
لمزامنة المجلدات مع جهاز كمبيوتر بعيد، rsync
يجب تثبيته على كلا الكمبيوترين. قم بإعداد اتصال SSH بين الكمبيوترين قبل محاولة استخدامه rsync
إلى الكمبيوتر البعيد.
يجب أن تكون قادرًا على تسجيل الدخول عن بُعد كمستخدم عادي على الكمبيوتر البعيد rsync
لا يهم ما إذا كنت تستخدم معرفًا وكلمة مرور لتسجيل الدخول، أو إذا كنت قد قمت بإعداد مفاتيح SSH للوصول الآمن بدون كلمة مرور، ولكن إذا لم تتمكن من تسجيل الدخول كمستخدم، rsync
لن يعمل أيضًا
إذا قمت بتسجيل الدخول باستخدام كلمة مرور، rsync
سيطلب منك إدخال كلمة المرور. إذا كنت تستخدم مفاتيح SSH لتسجيل الدخول، فستكون العملية سلسة.
الشيء الإضافي الوحيد الذي عليك القيام به هو إضافة اسم حساب المستخدم وعنوان IP للكمبيوتر البعيد إلى بداية مسار الملف الوجهة. استخدم علامة “@
“لفصل اسم المستخدم عن اسم الكمبيوتر أو عنوان IP، وعلامة النقطتين”:
“لفصل اسم الكمبيوتر أو عنوان IP عن مسار الدليل.
على شبكة الاختبار الخاصة بنا، هذين الأمرين متكافئين.
rsync -av /home/dave/geocoder dave@nostromo.local:/home/dave/Downloads
rsync -av /home/dave/geocoder dave@192.168.86.60:/home/dave/Downloads
نحصل على نفس المعلومات المبلغ عنها لنا كما نفعل عندما نقوم بنسخ الملفات محليًا.
8. تضمين أو استبعاد الملفات أو الدلائل
قد يكون لديك ملفات وأدلة في الدليل المصدر لا تريد نسخها إلى الكمبيوتر الوجهة. يمكنك استبعادها باستخدام --exclude
الخيار. وبطريقة مماثلة، يمكنك اختيار تضمين ملفات وأدلة محددة مع --include
خيار.
الغريب هو أنه إذا كنت تستخدم --include
الخيار بمفرده، يتم نسخ جميع الملفات، كما هو الحال عادةً — بما في ذلك الملفات المضمنة على وجه التحديد. لنسخ الملفات المضمنة فقط، يجب عليك --exclude
كل شئ آخر.
يمكنك استخدام العديد من --include
و --exclude
يمكنك وضع الخيارات في الأمر الخاص بك كما تريد، ولكن تأكد من وضع --include
الخيارات قبل --exclude
تأكد أيضًا من وجود شرطة مائلة للأمام في مسار ملف المصدر.
يقوم هذا الأمر بنسخ ملفات الكود المصدر C وملفات البيانات CSV فقط إلى الكمبيوتر الوجهة.
rsync -av --include="*.c" --include="*.csv" --exclude="*" /home/dave/geocoder/ /run/mount/drive2/geocoder
الملفات الوحيدة التي تم نسخها هي الملفات التي قمنا بتضمينها خصيصًا.
9. ضغط الملفات أثناء النقل
ال -z
يؤدي خيار (الضغط) إلى rsync
لضغط الملفات المنقولة. ومع ذلك، لا يتم تخزينها كملفات مضغوطة على الكمبيوتر الوجهة، بل يتم ضغطها فقط أثناء النقل نفسه. يمكن أن يؤدي هذا إلى تسريع عمليات النقل الطويلة.
rsync -avz /home/dave/geocoder /run/mount/drive2
10. مراقبة التقدم
عند الحديث عن الانتقالات الطويلة، يمكننا إضافة بعض الإحصائيات حتى نتمكن من رؤية تقدم عملية الانتقال.
ال -P
يضيف الخيار (جزئيًا، تقدميًا) في الواقع خيارين، --partial
و --progress
. ال --partial
الخيار يقول rsync
للاحتفاظ بالملفات المنقولة جزئيًا في حالة فشل النقل. وهذا يوفر الوقت عند إعادة تشغيل النقل.
ال --progress
يقوم الخيار بطباعة البيانات المنقولة لكل ملف بالبايت ونسبة مئوية، وسرعة النقل، والوقت المستغرق، وعدد الملفات المنقولة، وعدد الملفات المتبقية.
rsync -aP /home/dave/geocoder /run/mount/drive2
يتم تمرير الإخراج بسرعة كبيرة، ومن الصعب قراءته. يمكنك تحسين الأمور قليلاً عن طريق إزالة -v
خيار (verbose) من الأمر. وحتى في هذه الحالة، لا يزال من الصعب قراءته أثناء مروره بسرعة.
غالبًا ما يكون من المفيد مراقبة تقدم عملية النقل الشاملة. يمكنك القيام بذلك باستخدام الخيار –info، وتمرير “progress2” إليه كمعلمة.
sync -a --info=progress2 /home/dave/geocoder /run/mount/drive2
يؤدي هذا إلى تقديم تقرير تقدم مفيد فعليًا.
مثل cp على المنشطات
ال rsync
إن الأمر سريع ومرن ويستحق الوقت الذي تستغرقه للتعرف عليه. الشكل الأساسي للأمر هو rsync
الأمر مع -av
ليس من الصعب على الإطلاق تذكر الخيارات ودليل المصدر ودليل الوجهة.
بالنسبة للعديد من حالات الاستخدام، هذا كل ما تحتاجه. اعتد على ذلك وسيأتي الباقي بسهولة.