سؤال

حسنا SOF، هذا صعب للغاية لشرح، لكنني سأبذل قصارى جهدي.

لدي 2 محركات أقراص متطابقة. دعونا ندعو "S:" "للمصدر و" D: "للوجهة

S: هو محرك الأقراص أحتفظ بجميع ملفاتي في (الصور والموسيقى ومقاطع الفيديو والمستندات وغيرها)، و D: هي نسخة احتياطية عالية الدقة (يدويا) مرة أخرى كل ليلة الأحد.

ما أود القيام به هو، النسخ الاحتياطي S: في D:، مع بعض القواعد.

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

  1. فقط نسخ الملفات الجديدة، أو الملفات التي تم تعديلها (سوف NED للتحقق من ميتادا الملف)

  2. في نهاية النسخ الاحتياطي، D: يجب أن ينتهي بك الأمر متطابقين إلى S :.

بمعنى، إذا قمت بتحريك ملف من مجلد "A" إلى مجلد "B" في S:، فسترى الخلف أن الملف لم يعد في مجلد "a"، وسيتعين عليك حذفه، لجعل هذا المجلد متطابقا س:.

ربما كان الخطوة 2 ربما شرح ضعيف., ، إذن إليك تفسير أفضل. هذه هي الطريقة التي أخطط للقيام بها الأشياء إذا لم يستطع RSYNC القيام بذلك.

في بيثون، أود إنشاء برنامج نصي يقوم بما يلي (بالترتيب):

  1. يقارن D: إلى S: - البرنامج النصي من شأنه أولا اجتياز D: في كل مرة يدخل فيها دليل، يبدو في نفس الدليل في S :. ثم ينظر إلى الملفات. إذا كان الملف الموجود في D: ولكن ليس في S:، فهذا يعني أن الملف قد تم حذفه أو إعادة تسميته أو نقله حوله في S :. لذلك، حذف هذا الملف من D: (كرر هذه العملية لجميع المجلدات)

  2. الآن أن D: لديك نفس الملفات بالضبط (أو أقل إذا تم حذفها في الخطوات أعلاه)، ابدأ النسخ. تحقق أولا مما إذا كان الملف الحالي في S: موجود في D:، إن لم يكن، ثم انسخ. إذا فعلت، تحقق البيانات الوصفية. إذا تم تعديلها ونسخها وكتابةها.

آسف إذا لم أن أشرح هذا جيدا، فهذا هو 4:15 صباحا، وبصراحة، تعبت من حذف الملفات D يدويا يدويا من S: = /

هل كانت مفيدة؟

المحلول

إليك برنامج نصي كتبته للنسخ الاحتياطي لآلة Linux الخاصة بي إلى محرك أقراص USB.

#!/bin/sh

rsync -a \
  --progress \
  --hard-links \
  --whole-file \
  --delete \
  --delete-after \
  --delete-excluded \
  --stats \
  --filter='- *.log' \
  --filter='- /dev' \
  --filter='- /boot' \
  --filter='- /media/' \
  --filter='- /mnt' \
  --filter='- /net' \
  --filter='- /proc' \
  --filter='- /tmp/' \
  --filter='- /var/log/' \
  / /media/disk/middle-earth

ال --منقي تستبعد الخطوط الملفات / الدلائل الفرعية التي لا أريد مزامنة.

يمكنك استخدام هذا كنقطة انطلاق لصياغة خاصة بك.

نصائح أخرى

أعتقد أنك تبحث عن --archive التبديل مع --delete ل rsync. وبعد وهذا هو، إذا كنت على حق في افتراض أن وصفك يعني "أود أن يكون لدي نفس المحتويات كما هو: بعد تشغيل نسخة احتياطية، دون الحاجة إلى حذف كل شيء على D: أولا".

أفترض أيضا أنه على الرغم من أنك تستخدم نوافذ تدوين أحرف محرك الأقراص، فإنك لا تستخدم في الواقع في الواقع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top