mrsaynothing.dev
rsync command generator — dry-run أولًا، وحذف بشبكة أمان

> rsync command generator — dry-run أولًا، وحذف بشبكة أمان▋

معظم مولّدات أوامر rsync تركّب الخيارات وتتمنى لك حظًا سعيدًا. هذه الأداة تجري dry-run افتراضيًا وترفض أي --delete مجرد: شبكة النسخ الاحتياطي تجعل كل نسخة مطابقة قابلة للتراجع.

mrsaynothing· 16 أكتوبر 2026· 4 دقيقة قراءة

ما الذي يفصل المزامنة عن المحو؟ خيار واحد غالبًا. اكتب rsync -a --delete /mnt/empty-usb/ /home/you/ وسيراعي rsync وجهتك لتطابق مصدرك بأمانة — كل شيء، بما في ذلك الجزء الذي صار فيه مجلدك المنزلي فارغًا. كل مولّد وجدته في الصفحة الأولى يركّب ذلك الخيار بسرور خلف مربع اختيار؛ وأحدها حتى يوسم مخرَجه بعبارة «مولّد بالذكاء الاصطناعي ولم يُدقق بعد» — وهذه جرأة أن تُطبع فوق أمر حذف. هذه هي الكذبة التي ترفضها الأداة: أن تركيب صياغة rsync وفهم دلالات rsync مهمة واحدة. إن rsync command generator قد صار حيًّا — يبني الأمر، ويسمّي الفخاخ بلغة واضحة، ويتعامل مع --delete بوصفه المسدس الممشوق الذي هو عليه.

لماذا يستحق --delete تحذيرًا؟

لأن عقد rsync هو جعل الوجهة مطابقة للمصدر، وأن --delete يمدّ هذا العقد إلى الإزالة. صفحة الدليل صريحة: معنى الخيار «delete extraneous files from the destination dir». و«extraneous» أي كل ما لا يملكه المصدر — بما في ذلك ما ينقص فقط لأنك أشّرت إلى مصدر خاطئ، أو حمّلت ذاكرة USB خاطئة، أو أخطأت في كتابة مسار. مهمة المولّد أن يجعل هذه العاقبة مرئية قبل تشغيل الأمر لا بعده:

الخيار ماذا يفعل ماذا يفعل حين تخطئ
--delete ملفات الوجهة الغائبة عن المصدر تُزال مسار مصدر خاطئ ← ملفات الوجهة «extraneous» ← اختفت
src/ vs src الشرطة المائلة اللاحقة تنسخ المحتوى؛ وبدونها يُنسخ المجلد نفسه محرف واحد، وتنظيم الوجهة مختلف كليًا
-a أرشفة: تكرار + صلاحيات وأوقات ومالكين وروابط رمزية أُفلِت ← «نسخة احتياطية» ليست كذلك في صمت
--partial يُبقي الملفات ناقلة النقل عند الانقطاع وصلة متقلبة ← إعادة النقل كله من الصفر

سطر الشرطة المائلة اللاحقة هو الحالة الكلاسيكية. تقول وثائق rsync نفسها إن الشرطة المائلة على المصدر «changes this behavior to avoid creating an extra directory at the destination» — وبلغة الوثائق هذا يعني: src/ يصبّ المحتوى في الوجهة، وsrc ينشئ dest/src ثم يصبّ المحتوى هناك. محرفان. ويعرض المولّد أيّ الجملتين تنطبق أثناء كتابتك، فالشرطة المائلة اللاحقة هي أيضًا الخيار الوحيد في rsync الذي التتهم مجلدات منزلية أكثر مما التتهم rm -rf في مسيرته كلها.

كيف تسلّح الحذف بأمان؟

لا تُنزع الأمان — بل تضيف شبكة. تدفق التسليح في المولّد خطوتان: يخرج الأمر ومعه --dry-run فتقرأ ما كان سيحدث؛ وعندها فقط تقلب مفتاح التسليح للتشغيل الحقيقي. ومتى شارك --delete، ترفض الأداة إصدار حذف مجرد. إنها تُلحق الشبكة:

rsync -a --delete \
  --backup --backup-dir=/mnt/backup/_rsync_backup_$(date +%F) \
  /mnt/usb/ /mnt/backup/

مع --backup --backup-dir مفعّلين، لا يدمّر rsync الملفات التي يزيلها أو يستبدلها — بل ينحّيها جانبًا أولًا إلى المجلد المؤرّخ. وتبقى النسخة المطابقة دقيقة في النهاية. ويوم تكتشف أن المصدر المركّب كان الخطأ، تكون ملفاتك جاثمة في _rsync_backup_2026-10-16/ بدل أن تكون عبرة. قابلية التراجع هي الفرق بين نسخة مطابقة وذكرى.

نعم: rsync -a --delete --backup --backup-dir=DEST/_rsync_backup_$(date +%F) SRC/ DEST/. ينقل خيارا الشبكة كل ملف محذوف أو مستبدل إلى مجلد مؤرّخ بدل محوه، فتبقى النسخة المطابقة دقيقة والحذف قابلًا للتراجع. شغّل dry-run أولًا بالخيار -n، اقرأ القائمة، ثم سلّح.

تحقّق: man rsync ← يقول --backup «make a backup of every file installed» · وتهبط صفوف --backup-dir في DEST/_rsync_backup_<date>/ لا في العدم

أي الخيارات يربط المولّد؟

المجموعة التي تغطي كل نقل حقيقي تقريبًا، مصنّفة كما تقرّر فيها فعلًا:

  • المسارات — محلي أو بعيد من الطرفين (user@host:/path)، مع منفذ SSH موصول عبر -e "ssh -p 2222" إن لم يكن 22.
  • الاتجاه — مفتاح الشرطة المائلة اللاحقة، مع طباعة جملة «المحتوى أم المجلد» مباشرة.
  • المرشحات — أنماط --exclude مع إعدادات جاهزة للمشتبه بهم المعتادين: .git وnode_modules وذاكرات التخزين المؤقت والسجلات.
  • المجاملة — ضغط -z، و--bwlimit كي يكفّ النسخ الاحتياطي الثالث فجرًا عن إشباع شبكة المنزل، و-P للتقدم وقابلية الاستئناف، و-c حين يكذب mtime.
  • مسار التسليح — dry-run افتراضيًا، خطوة تسليح صريحة، وشبكة تُلحق تلقائيًا بأي --delete.

الخرج سطر واحد جاهز للصق (أو أسطر متعددة بفواصل استمرار — لتفضيل طرفيتك)، مع مقتطف قابل للتضمين إن أردت المولّد في صفحتك الخاصة. ومثل حاسبة GGUF VRAM، إنه ملف HTML واحد يجري الحساب في متصفحك — لا شيء مما تكتبه يغادر الصفحة، فأداة عن النسخ الآمن لا ينبغي أن تتصل بالخارج.

أين يقف هذا في صندوق الأدوات

المولّد يؤلف الأمر؛ والمقالات الشقيقة تحفظ النظرية. rsync مقابل scp تغطي لماذا يتفوق النقل بالفروق في rsync على النسخة الغبية ومتى يبقى scp مقبولًا. وcron مقابل مؤقتات systemd هو نصف الجدولة — أمر rsync الخارج من المولّد يهبط في مؤقت، وجانب اليوميات لمعرفة ما إذا كان قد شُغّل فهو في ورقة غش journalctl.

dry-run تتخطاه حذفٌ لم تقصده.

الأداة على github.com/mrsaynothing/rsync-builder — رخصة MIT، ملف واحد، بلا خطوة بناء. وإن بدا لك تدفق التسليح يومًا وكأنه وعظ، فتلك هي الميزة وهي تعمل؛ وإن استطعت تسمية تركيبة خيارات لا تغطيها الشبكة، فافتح issue — الزوايا الخطرة هي بالضبط ما يستحق الرسم على الخريطة.

$ احصل على سجل البناء التالي بالبريد

رسالة واحدة لكل مقال. بالأدلة والأخطاء.

self-hosted · بلا أطراف ثالثة · إلغاء الاشتراك بنقرة واحدة

بريد واحد أسبوعيًا. صفر أدوات تتبع.

ما هذا؟