دليل Rysnc و 11 مثالاً لاستخدامه بشكل فعال

Rsync هي أداة سطر أوامر مجانية الاستخدام تتيح لك مزامنة الملفات محليًا وعن بُعد. باستخدامه ، يمكنك نقل الملفات والدلائل.

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

ستعلمنا هذه المقالة كيفية عمل Rysnc وتعطي بعض الأمثلة المفيدة.

كيف يعمل Rsync؟

Rsync هي أداة سطر أوامر للمزامنة عن بُعد للأنظمة الشبيهة بنظام Unix. يمنح المستخدم القدرة على نقل / مزامنة الملفات بين الأجهزة أو مضيفين بسلاسة.

تحت الغطاء ، يستخدم rsync خوارزمية دلتا النقل. تتضمن هذه الخوارزمية نسخ الاختلافات بين الملفين عبر مضيفين (المصدر والوجهة). يمكن أن يكون المصدر والوجهة محليًا أو بعيدًا. يمكن لأمر rsync تنفيذ مهام نسخ / مزامنة البيانات بطريقتين. هؤلاء هم:

  • استخدم ssh و rsh للنسخ / المزامنة بين مضيفين.
  • استخدم البرنامج الخفي لـ TCP rsync للنسخ / المزامنة.

نظرًا لأنه مصمم للعمل في أنظمة تشبه Unix ، فهو يعمل أيضًا في Linux.

تستخدم عملية rsync خطوة بخطوة على النحو التالي:

  • يستخدم Rsync SSH للاتصال بالمضيف البعيد ويطلب كلمة مرور.
  • بمجرد الاتصال ، يتصل rsync الخاص بالمضيف البعيد بالمصدر.
  • ستحدد هذه البرامج بعد ذلك الملفات والأدلة التي تحتاج إلى مزامنة. يستخدم خوارزمية delta-transfer للتحقق من الفرق بين الملفات.

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

يحقق الأمر rsync تحديثات تدريجية من خلال تخزين الاختلاف في ملف مؤقت قبل دفعه إلى الوجهة.

قبل ان تبدا:

  • أنت بحاجة إلى امتيازات الجذر أو sudo
  • الوصول إلى سطر الأوامر / المحطة
  • وصول SSH لتشغيل أوامر rsync بأمان
  • تحتاج أيضًا إلى جهازين لعمل rsync.

في البرنامج التعليمي ، سنستخدم Linux Mint 21.1 Vera. يمكنك بسهولة اتباع الدليل دون مشاكل باستخدام أي توزيعة Linux أخرى.

لماذا استخدم rsync Over Scp؟

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

صيغة الأمر scp كما يلي:

scp option SOURCE DESTINATION

ومع ذلك ، يبقى السؤال ، لماذا استخدام rsync على scp؟

حسنًا ، هناك فوائد متعددة لاستخدام rsync. تشمل هذه الفوائد:

  • تنفيذ أسرع: يعد Rsync أسرع من scp لأنه يستخدم بروتوكول تحديث عن بُعد. هذا يسمح لها بنقل الاختلافات فقط بدلاً من الملف بأكمله. لذلك ، إذا قمت بإعداد مزامنة منتظمة بمرور الوقت ، فأنت تحتاج فقط إلى عمل نسخة كاملة في المرة الأولى. من المرة التالية فصاعدًا ، يقوم فقط بنسخ الأجزاء المحدثة بمساعدة خوارزمية delta-transfer.
  • استهلاك أقل لعرض النطاق الترددي: نظرًا لأن rsync لا يضطر إلى نسخ الملف بالكامل مرة أخرى ، فإنه يؤدي إلى تقليل استهلاك النطاق الترددي. علاوة على ذلك ، فإنه يستخدم أيضًا خوارزميات الضغط / إلغاء الضغط لتقليل حجم الملف أثناء النقل.
  • المزيد من خيارات سطر الأوامر: يتفوق Rsync أيضًا على scp في عدد خيارات سطر الأوامر. هذا يعني أنه يمكنك ضبط rsync أكثر من scp.

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

  ما هي الميزات التي تمتلكها Minecraft على Nintendo Switch؟

صيغة الأمر Rsync

أمر rsync كالتالي:

هنا ، يتم تعريف المصطلحات أدناه:

  • OPTION – هذه هي خيارات rsync
  • المصدر – دليل المصدر
  • DEST – دليل الوجهة
  • المستخدم – اسم المستخدم البعيد
  • HOST – اسم المضيف البعيد أو عنوان IP

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

تشمل خيارات rsync الأخرى:

  • -z: ضغط البيانات لتوفير المساحة
  • -h: يوفر إخراج تنسيق يمكن قراءته من قبل الإنسان
  • -b: إجراء النسخ الاحتياطي أثناء عملية مزامنة البيانات
  • -e: استخدام بروتوكول SSH لنقل البيانات عن بعد
  • -التقدم: عرض تقدم مزامنة البيانات
  • -v: اطلب من rsync عرض إخراج مطول
  • –n: تنفيذ التشغيل الجاف لاختبار الإعدادات والإعداد لمزامنة البيانات
  • -q: قم بإيقاف إخراج أمر rsync وخياراته

تثبيت rsync

تأتي معظم أنظمة Unix و Linux مثبت عليها rsync. إذا لم يكن نظامك يحتوي على rsync ، فيمكنك تثبيته باستخدام الأمر (الأوامر) التالية.

لـ Debian / Ubuntu و Mint

sudo apt-get install rsync

بالنسبة إلى Arch Linux

pacman -S rsync

على Gentoo

emerge sys-apps/rsync

على CentOS / Fedora / REHL

sudo yum install rsync

على openSUSE

sudo zypper install rsync

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

nitt ~
$ rsync
rsync  version 3.2.3  protocol version 31
Copyright (C) 1996-2020 by Andrew Tridgell, Wayne Davison, and others.
Web site: https://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, hardlink-specials, symlinks, IPv6, atimes,
    batchfiles, inplace, append, ACLs, xattrs, optional protect-args, iconv,
    symtimes, prealloc, stop-at, no crtimes
Optimizations:
    SIMD, no asm, openssl-crypto
Checksum list:
    xxh128 xxh3 xxh64 (xxhash) md5 md4 none
Compress list:
    zstd lz4 zlibx zlib none

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

rsync is a file transfer program capable of efficient remote update
via a fast differencing algorithm.

دعنا الآن نرى rsync قيد العمل مع حالات استخدام مختلفة.

بالنسبة للبرنامج التعليمي ، سنقوم بعمل دليلين.

  • دليل المصدر
  • دليل Dest

لذلك ، تحتاج إلى كتابة الأوامر التالية.

mkdir source-directory
mkdir dest-directory

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

touch source-directory/file{1..100}

يؤدي هذا إلى إنشاء 100 ملف فارغ في الدليل المصدر. يمكنك تأكيد ذلك عن طريق إدخال الأمر أدناه.

ls source-directory
Output:
nitt rsync-tutorial
$ ls
dest-directory  source-directory
nitt rsync-tutorial
$ touch source-directory/file{1..100}
nitt rsync-tutorial
$ ls source-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99

ملاحظة: لقد أبقينا مجلد dest فارغًا.

نسخ الدلائل محليًا بشكل متكرر

على الرغم من أن rsync يهدف بشكل أساسي إلى نسخ الملفات بين خادم محلي وخادم بعيد ، إلا أنه مفيد أيضًا لنسخ الملفات محليًا.

في هذه الحالة ، سنستخدم صيغة rsync التالية.

خيار rsync المصدر الوجهة

انسخ الملفات الموجودة في دليل المصدر إلى المجلد dest عن طريق تشغيل الأمر التالي.

rsync -r source-directory/ dest-directory

هنا ، يقوم الأمر “بشكل متكرر” بنسخ الملفات من الدليل المصدر إلى الدليل المصدر.

nitt rsync-tutorial
$ ls
dest-directory  source-directory
nitt rsync-tutorial
$ ls dest-directory
nitt rsync-tutorial
$ ls source-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99
nitt rsync-tutorial
$ rsync -r source-directory/ dest-directory
nitt rsync-tutorial
$ ls dest-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99

يؤدي هذا إلى نسخ كل ملف منفرد في الدليل المصدر إلى الدليل الوجهة.

  ستقوم Microsoft بدمج تطبيقات UWP و Win32 مع Project Reunion

نسخ ملف واحد محليًا

الآن بعد أن تعلمنا كيفية مزامنة دليلين ، سنتعلم كيفية نسخ ملف واحد.

لهذا الغرض ، سنقوم بتحرير الملف الفارغ file1 في الدليل المصدر ثم نقوم بمزامنته مع نفس الملف الموجود في المجلد dest.

لتحرير ملف ، اكتب الأمر التالي.

nano source-directory/file1

الآن انسخ والصق النص التالي في محرر nano.

We're updating file1 in the source-directory.
Once we update, we'll push the new update to the dest-directory.
rsync doesn't need to re-copy the file using the delta-transfer algorithm.
This algorithm checks the differences and then updates destination files
accordingly.
So, once you save file1 in the source-directory, open file1 in
the dest-directory. It'll be empty.
However, if we check it after running rsync, you'll see that file1 in dest-directory
is updated.

إضافة محتوى إلى ملف

الآن ، أغلق الملف واحفظه.

لنقم الآن بنسخ الملف باستخدام rsync.

sudo rsync -v --existing source-directory/file1 /dest-directory
#Output
nitt rsync-tutorial
$ sudo rsync -v --existing source-directory/file1 dest-directory
file1

sent 557 bytes  received 35 bytes  1,184.00 bytes/sec
total size is 474  speedup is 0.80

nitt rsync-tutorial
$ 

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

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

rsync -v source-directory/newfile dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile dest-directory
newfile

sent 82 bytes  received 35 bytes  234.00 bytes/sec
total size is 0  speedup is 0.00

نسخ ملفات متعددة

إذا كنت تنوي نسخ ملفات متعددة ، فيجب عليك ذكر مسارات مصدر كلا الملفين ، متبوعًا بالدليل الهدف.

لهذا الغرض ، سننشئ ملفين جديدين: newfile2 و newfile3 ، في دليل المصدر. قم بتشغيل الأمر التالي للقيام بذلك.

touch source-directory/newfile{2..3}

الآن ، استخدم الأمر التالي لمزامنة ملفات متعددة.

rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
newfile2
newfile3

sent 135 bytes  received 54 bytes  378.00 bytes/sec
total size is 0  speedup is 0.00
nitt rsync-tutorial
$ 

نسخ ملف أو دليل من محلي إلى بعيد

بناء جملة rsync للنقل المحلي إلى البعيد كما هو موضح أدناه.

rsync option SOURCE [email protected]:DEST

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

rsync -av /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory

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

rsync -av /Projects/rsync-tutorial/source-directory [email protected]: /Projects/rsync-tutorial/dest-directory

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

rsync -av /Projects/rsync-tutorial/source-directory/newfile1 /Projects/rsync-tutorial/source-directory/newfile2 192.168.192.200: /Projects/rsync-tutorial/dest-directory

البروتوكولات الخاصة بالنقل البعيد

يتيح لك Rsync تحديد بروتوكولات معينة لنقل الملفات. للقيام بذلك ، تحتاج إلى استخدام الخيار -e ، متبوعًا بالبروتوكول.

  FastPeopleSearch ، دليل إلغاء الاشتراك والإزالة

على سبيل المثال ، إذا كنت تريد استخدام بروتوكول ssh ، فيجب عليك إلحاق -e ssh بأمر rsync.

rsync -e ssh /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory

نسخ ملف أو دليل من بعيد إلى محلي

بناء جملة rsync للنقل المحلي إلى البعيد كما هو موضح أدناه.

sync option [email protected]:SRC DEST

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

rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

يسحب الأمر الملفات الموجودة في دليل dest للجهاز البعيد إلى دليل مصدر الجهاز المحلي.

وبالمثل ، يمكنك سحب ملف معين من خلال ذكره من خلال مساره الكامل.

rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory/newfile4 /Projects/rsync-tutorial/source-directory

لنسخ ملفات أو أدلة متعددة من محلي إلى بعيد ، تحتاج إلى تحديد المسار داخل الأقواس المتعرجة (مفصولة بفواصل) بعد عنوان IP للخادم.

rsync -av 192.168.192.200: {/Projects/rsync-tutorial/dest-directory/, /home/music/2023-music} /Projects/rsync-tutorial/source-directory

وبالمثل ، يمكنك ذكر الملفات أيضًا.

إظهار التقدم المباشر أثناء النقل

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

rsync -av --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

احذف ملفات المصدر بمجرد اكتمال النقل

يمكنك استخدام علامة -remove-source-files لإزالة الملفات المصدر بعد النقل الكامل. يمكن أن يساعدك هذا في العديد من السيناريوهات ، خاصة عندما يتعلق الأمر بتأمين ملفاتك دون ترك أي أثر أو استخدامها ببساطة لتحرير مساحة.

rsync -av --remove-source-files 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

تشغيل Rsync الجاف

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

تحتاج إلى استخدام خيار التشغيل الجاف لإجراء تشغيل جاف. أضفه إلى الأمر ، متبوعًا بالمصدر والوجهة.

sudo rsync -v --dry-run source-directory/file1 dest-directory
nitt rsync-tutorial
$ sudo rsync -v --dry-run source-directory/file1 dest-directory
file1

sent 43 bytes  received 19 bytes  124.00 bytes/sec
total size is 474  speedup is 7.65 (DRY RUN)
nitt rsync-tutorial

الإخراج مشابه لكيفية تشغيلنا له من قبل. ومع ذلك ، ستلاحظ ذكر (DRY RUN) في نهاية الإخراج.

تعيين الحد الأدنى والحد الأقصى لحجم الملف

يتيح لك Rysnc أيضًا تعيين الحد الأدنى أو الحد الأقصى لحجم الملف أثناء النقل.

لذا ، إذا كنت تريد نقل بحجم 15 كيلوبايت كحد أدنى ، فأنت بحاجة إلى استخدام –min-size = 15K.

rsync -av --min-size=15k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

سيقوم الأمر فقط بنسخ الملفات ذات الحد الأدنى لحجم الملف 15 كيلو بايت. إذا كان حجم الملف أقل من ذلك ، فسيتجاهله.

وبالمثل ، يمكنك استخدام علامة –max-size لتعيين الحد الأقصى لحجم الملف.

rsync -av --max-size=450k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

هنا ، سيتجاهل rsync الملفات التي يزيد حجمها عن 450 كيلو بايت.

تعيين حد النطاق الترددي

إذا كنت تقوم بمهام أخرى كثيفة النطاق الترددي ، فيمكنك تعيين rysnc لتعيين حد النطاق الترددي للنقل. للقيام بذلك ، استخدم –bwlimit = KB / s.

rsync -av --bwlimit=100 --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

هنا ، قمنا بتعيين النطاق الترددي على 100 كيلو بايت / ثانية أثناء النقل.

الكلمات الأخيرة

هذا يقودنا إلى نهاية دليل أوامر rsync الخاص بنا. لقد تعلمنا كيفية استخدام rysnc وقمنا بتغطية الكثير من الأوامر بفعالية.

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

بعد ذلك ، تحقق من أوراق الغش في سطر الأوامر لأنظمة Windows و Linux و macOS.