Both ship with OpenSSH on virtually every Linux distribution — this is a خيار عادة لا خيار تثبيت، والعادة ينبغي أن تكون rsync افتراضياً. الفرق في الحالة: scp يفتح قناة SSH ويلفق البايتات ويغلق ولا يتذكر شيئاً. أما rsync فيبني قائمة checksums للوجهة قبل الإرسال وينقل ما يختلف فقط. كل ما في هذه الصفحة يسقط من هذه الجملة.
rsync للنسخ الاحتياطية والأشجار الكبيرة وكل ما ستشغّله أكثر من مرة — scp لملف صغير واحد، مرة واحدة.
scp cannot resume : انقطاع عند 900 MB من 1 GB — ينقص 100 MB — يعيد من الصفر. rsync مع --partial --append-verify يحول ذلك الإعادة إلى وقفة.
On re-runs rsync moves الكتل المتغيرة فقط; scp re-sends everything. The one flag to take away: --partial.
معظم الناس لا يحتاجون سواه — كل علم مُعنون، بالترتيب:
الشرطة الأخيرة تزحم الجميع مرة واحدة — rsync حتى يحذر بـ"no bytes transferred" حين تقصد الصيغة الأخرى
scp does one thing: open an SSH channel, stream the bytes, close. No state between runs, so a transfer that dies at 90% restarts from zero and re-sends the whole 1,000 MB. rsync أداة مزامنة تستخدم SSH وسيلة نقل بالصدفة: قبل الإرسال يبني قائمة checksums للوجهة (خوارزمية rolling-checksum
--delete; scp cannot.--exclude ; وscp ينسخ كل ما تشير إليه.--dry-run ; وscp لا يقدم شيئاً.لنسخة أولى لملف كبير عبر وصلة سريعة هما متقاربان — كلاهما يشبع SSH، ومرور checksums يضيف كلفة يسيرة. الفجوة تفتح في ثلاثة مواضع:
node_modules أو تثبيت ووردبريس — تكتمل بوضوح أسرع مع rsync.-z يضغط في الطيران، وهو عون على الوصلات WAN البطيئة.يمكنك توقيت كليهما بنفسك — الأمر متماثل الشكل، والإعادة هي موضع الجواب:
# الملف نفسه، الخادم نفسه، كلاهما عبر SSH
time scp bigfile.tar.gz user@server:/tmp/
time rsync -avh --progress bigfile.tar.gz user@server:/tmp/
# أعِد تشغيل كليهما: scp يعيد النسخ، rsync يتحقق ولا يرسل شيئاً تقريباً
time scp bigfile.tar.gz user@server:/tmp/
time rsync -avh --progress bigfile.tar.gz user@server:/tmp/
لا، scp لا يستطيع استئناف نقل مقطوع — لا علم ولا خدعة. تصميم rsync كله يفترض أن النقل سينقطع أحياناً:
rsync -avh --partial --append-verify --progress bigfile.tar.gz user@server:/srv/backup/
--partial يبقي الملف نصف المكتوب بدل حذفه.--append-verify يستأنف بالإلحاق ثم يتحقق checksum من المنطقة الملحقة — آمن ضد ملف جزئي تالف، بخلاف --append.--progress يريك من أين التقى الموضوع.ملفوفاً في حلقة إعادة محاولة، تكون نسخة احتياطية "اضبط وانسَ" حتى على اتصال معادٍ:
until rsync -avh --partial --append-verify --progress \\
./bigfile.tar.gz user@server:/srv/backup/; do
sleep 5
done
تحقق: شغّل rsync نفسه مجدداً → يتحقق ولا يرسل شيئاً تقريباً
scp app.conf user@host:/etc/myapp/ أقصر من أي استدعاء rsync، ولا شيء يستأنف أصلاً.One subtlety worth knowing: the OpenSSH project deprecated scp's original protocol years ago, and modern scp actually speaks SFTP تحت الغطاء. هذا أصلح عُجلة تهريب المسارات، لكنه لم يغيّر شيئاً في قيدين يهمّان — لا استئناف، ولا نقل فروقات. تغيير البروتوكول لا يحول scp إلى rsync. وإذا كان سؤالك فعلاً "rsync أم cp": cp هو النظير المحلي فقط لـ scp — بلا استئناف ولا فروقات ولا خصائص ما لم تضف أعلاماً — وللمهام المحلية الأحادية هو مناسب.
--delete يعكس الحذف أيضاً — يزيل من الوجهة الملفات التي اختفت من المصدر. قوي للمرايا، خطِر في كل ما سواه. جرّب جافة أولاً:
rsync -avh --delete --dry-run src/ user@server:/srv/dest/ # للمراجعة
rsync -avh --delete src/ user@server:/srv/dest/ # ثم التنفيذ
تحقق: مرور --dry-run يطبع قائمة الحذف ولا يغيّر شيئاً
لمزامنة يومية أو أسبوعية، أدخل rsync في مؤقت systemd ودعه ينقل الفروقات فقط — الصحيفة هي حيث تترك التشغيلات قصتها.
| scp | rsync | |
|---|---|---|
| يأتي مع OpenSSH | Yes | نعم |
| استئناف نقل مقطوع | No | نعم (--partial) |
| نقل الفروقات في الإعادات | No | Yes |
| يحفظ الأذونات/الروابط الرمزية | جزئياً | تماماً (-a) |
| أنماط استبعاد | No | --exclude |
| تجربة جافة | No | --dry-run |
| يعكس الحذف | No | --delete |
| الأفضل لـ | نسخ سريعة لمرة واحدة | النسخ الاحتياطية والمزامنات والأشجار الكبيرة |
الافتراضي rsync للنسخ الاحتياطية والأشجار الكبيرة وكل ما يمر عبر وصلة قد تنقطع وكل ما ستشغّله أكثر من مرة. استخدم scp عندما يكون الأمر لمرة واحدة ولن ينقطع شيء — وأضف دائماً --partial — فهو يحول كل انقطاع قادم من إعادة إلى وقفة.
نهاية صفحة النسخ · لم يُجلب شيء · كل شيء محلي