النسخ الاحتياطي والتعافي من الكوارث

rclone مع تخزين متوافق مع S3: الفرق بين copy وsync والتشغيل التجريبي وحدود السرعة والتشفير

إعداد rclone لحاوية متوافقة مع S3، ولماذا قد يحذف sync الملفات، مع التشغيل التجريبي وحدود الحذف وتقييد السرعة والتشفير عبر crypt.

تاريخ النشر
مدة القراءة
6 دقائق
الكاتب
SKYLINE Engineering

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

ثبّت إصداراً حديثاً

تحقق من الإصدار الذي تستخدمه قبل الاعتماد على أي خيار. أحدث إصدار من المشروع وقت كتابة هذا المقال هو v1.75.2 (9 أكتوبر 2026)، بينما تحزم Debian 12 (bookworm) وDebian 13 (trixie) الإصدار 1.60.1. وتنبّه صفحة التثبيت الرسمية إلى أن حزم التوزيعات كثيراً ما تكون قديمة، وتوفر سكربت تثبيت وأمر selfupdate للتثبيتات التي لا يديرها مدير حزم:

rclone version
# official install script, as published on rclone.org/install
sudo -v ; curl https://rclone.org/install.sh | sudo bash

إن فضّلت البقاء على حزمة Debian فتذكّر أن التوثيق في rclone.org يصف أحدث إصدار، فاختبر كل خيار عبر --help على إصدارك.

إعداد وجهة متوافقة مع S3

شغّل rclone config وأنشئ وجهة جديدة من النوع s3، واختر مزوّدك إن كان مدرجاً أو اختر «أي مزوّد آخر متوافق مع S3» (provider = Other). سيبدو الناتج في ~/.config/rclone/rclone.conf هكذا:

[objstore]
type = s3
provider = Other
env_auth = false
access_key_id = YOUR_ACCESS_KEY
secret_access_key = YOUR_SECRET_KEY
endpoint = https://s3.example.com

مع المزوّد العام يستخدم rclone عناوين بأسلوب المسار افتراضياً (القيمة الافتراضية للخيار force_path_style هي true). وإذا لم يكن مفتاحك مخوّلاً بإنشاء الحاويات فأضف no_check_bucket = true (أو الخيار --s3-no-check-bucket) كي لا يحاول rclone ذلك. ثم اختبر الاتصال:

chmod 600 ~/.config/rclone/rclone.conf
rclone lsd objstore:
rclone ls objstore:my-bucket --max-depth 1

ملف الإعداد يحوي بيانات اعتماد صالحة، فاجعله مقروءاً للحساب الذي يشغّل rclone فقط، أو فعّل تشفير الإعداد من rclone config بالخيار s (تعيين كلمة مرور للإعداد)، وعندها سيطلب rclone كلمة المرور عند كل تشغيل، ويمكن تمريرها عبر المتغير RCLONE_CONFIG_PASS أو الخيار --password-command.

copy أم sync: القرار الأهم

الأمر rclone copy ينقل الملفات الجديدة والمعدّلة ولا يحذف شيئاً من الوجهة أبداً. أما rclone sync فيجعل الوجهة مطابقة للمصدر، وهذا يشمل حذف ما لم يعد موجوداً في المصدر. ويقول التوثيق صراحة إن sync قد يسبب فقدان البيانات، لذا جرّبه أولاً مع --dry-run أو --interactive.

  • استخدم copy حين ينبغي أن تتراكم الملفات في الحاوية: ملفات تصدير وأرشيفات ونسخ قواعد بيانات بأسماء مؤرخة.
  • استخدم sync فقط حين تريد مرآة فعلية، وتذكّر أن المرآة ليست نسخة احتياطية؛ فإن حُذف ملف على الخادم أو شفّره برنامج فدية، نقلت المزامنة التالية هذا التغيير إلى الحاوية بأمانة.

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

# see what would happen, change nothing
rclone sync /var/www/site objstore:my-bucket/site --dry-run
# confirm each change interactively
rclone sync /var/www/site objstore:my-bucket/site --interactive
# additive copy with live progress
rclone copy /var/backups/db objstore:my-bucket/db -P

وسائل أمان لأمر sync

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

rclone sync /var/www/site objstore:my-bucket/current \
  --backup-dir objstore:my-bucket/old/$(date +%F) \
  --max-delete 200 \
  --log-file /var/log/rclone-site.log --log-level INFO

يجب أن يكون مجلد النسخ على الوجهة نفسها وألا يتداخل معها، ولهذا يستخدم المثال مسارين متجاورين هما current وold. ستتراكم المجلدات القديمة، فنظّفها بقاعدة دورة حياة على الحاوية أو بمهمة دورية تستخدم rclone delete --min-age بعد اختبارها مع --dry-run.

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

قد تستهلك عمليات الرفع الكبيرة اتصال الخادم بالكامل. الخيار --bwlimit يقيس بالبايت في الثانية لا بالبت، فالقيمة --bwlimit 10M تعني 10 MiB/s. يمكنك تحديد الرفع والتنزيل كلٌّ على حدة (--bwlimit 10M:off يقيّد الرفع فقط)، أو وضع جدول زمني يبطّئ النقل في ساعات العمل:

rclone copy /srv/archive objstore:my-bucket/archive \
  --bwlimit "08:00,2M 18:00,20M 23:00,off"

تحقق مما وصل

الأمر rclone check يقارن الأحجام والبصمات بين المصدر والوجهة ويُبلغ عن الفروق دون تغيير أي طرف. ومع --one-way يكتفي بالتأكد من أن كل ما في المصدر موجود ومطابق في الوجهة، وهذا يناسب مهام copy التي تحتفظ وجهتها بملفات أقدم أيضاً.

rclone check /var/backups/db objstore:my-bucket/db --one-way

التشفير على جهة العميل عبر crypt

الوجهة من النوع crypt تغلّف وجهة أخرى وتشفّر محتوى الملفات، وأسماءها اختيارياً، قبل الرفع. أنشئها عبر rclone config بالنوع crypt موجّهةً إلى مسار مثل objstore:my-bucket/encrypted، ثم استخدم اسمها الجديد في أوامرك. وقبل أن تضع بياناتك فيها افهم ما يلي:

  • كلمة مرور crypt محفوظة في rclone.conf بصيغة مموّهة تموياً خفيفاً لا يصمد إلا أمام نظرة عابرة، ولا تكون آمنة ما لم تفعّل تشفير الإعداد.
  • احفظ كلمة المرور (وكلمة مرور الملح الاختيارية) في مكان آمن خارج الخادم؛ بها تعيد إنشاء الوجهة في أي مكان، ومن دونها لا يمكن فك تشفير البيانات.
  • لا يمكن تغيير كلمة مرور بيانات مشفرة سلفاً؛ فتغييرها في الإعداد يجعل الملفات القديمة غير مقروءة، والسبيل الوحيد إعادة رفع كل شيء عبر وجهة crypt جديدة.
  • الأمر rclone check لا يستطيع مقارنة البصمات عبر crypt، فاستخدم rclone cryptcheck بدلاً منه.

الجدولة

شغّل المهمة من مؤقت systemd أو cron بالحساب الذي يملك ملف الإعداد، مع --log-file ليبقى لديك سجل، وأطلق تنبيهاً حين ينتهي الأمر برمز خروج غير صفري. وابدأ كل مهمة جديدة بتشغيل تجريبي --dry-run واقرأ السجل قبل إزالة الخيار.

ما الذي ينبغي فعله

  1. تحقق من rclone version واستخدم إصداراً حديثاً إن كنت تعتمد على خيارات جديدة.
  2. استخدم مفتاحاً مقصوراً على الحاوية، واحمِ rclone.conf، وفكّر في تشفير الإعداد.
  3. اجعل copy خيارك الافتراضي، ولا تستخدم sync إلا للمرايا الحقيقية، دائماً بعد --dry-run ومع --max-delete ويفضّل مع --backup-dir.
  4. أضف --bwlimit على الخوادم التي تخدم المستخدمين في الوقت نفسه.
  5. تحقق عبر rclone check أو cryptcheck، واحفظ كلمات مرور crypt في مكان آمن خارج الخادم.
  6. تذكّر أن rclone ينقل الملفات؛ أما النسخ الاحتياطية ذات الإصدارات وإزالة التكرار وسياسات الاحتفاظ فاستخدم لها أداة نسخ مثل restic فوق الحاوية نفسها.

المصادر

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

صفحة الكاتب
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Backup & Disaster Recovery for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.