سؤال

لدينا إعداد نظام ftp للمراقبة/التنزيل من خوادم ftp البعيدة التي لا تخضع لسيطرتنا.يتصل البرنامج النصي ببروتوكول نقل الملفات عن بعد، ويلتقط أسماء الملفات الموجودة على الخادم، ثم نتحقق لمعرفة ما إذا كان قد تم تنزيله بالفعل.إذا لم يتم تنزيله، فإننا نقوم بتنزيل الملف وإضافته إلى القائمة.

لقد واجهنا مؤخرًا مشكلة، حيث سيقوم شخص ما على جانب بروتوكول نقل الملفات عن بعد بنسخ ملف واحد ضخم (> 1 جيجابايت) ثم يستيقظ البرنامج النصي ويرى ملفًا جديدًا ويبدأ في تنزيل الملف الذي يتم نسخه فيه.

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

ما هي أفضل طريقة للقيام بذلك، حاليًا يتم كل شيء عبر pythons ftplib، كيف يمكننا القيام بذلك بصرف النظر عن استخدام الطريقة المذكورة أعلاه.

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

شكرًا.

التحديث 1:

كنت أفكر ماذا لو حاولت إعادة تسميتها ...نظرًا لأن لدينا أذونات كاملة على بروتوكول نقل الملفات، إذا كان تحميل الملف قيد التقدم، فهل سيفشل أمر إعادة التسمية؟

ليس لدينا أي خيارات حقيقية هنا...هل نحن كذلك؟

التحديث 2:حسنًا، إليك شيء مثير للاهتمام حيث يبدو أن بعض بروتوكولات نقل الملفات (FTPS) التي اختبرناها تقوم بتخصيص المساحة تلقائيًا بمجرد بدء النقل.

على سبيل المثالإذا قمت بنقل ملف بحجم 200 ميجابايت إلى خادم بروتوكول نقل الملفات.بينما يكون النقل نشطًا إذا قمت بالاتصال بخادم بروتوكول نقل الملفات وقمت بالحجم أثناء حدوث التحميل.يظهر 200 ميجا للحجم.بالرغم من أن الملف مكتمل بنسبة 10% فقط.

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

:'(

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

المحلول

"اللعنة على الطوربيدات!بأقصى سرعة إلى الأمام!

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

نصائح أخرى

وكما قلت لديك 0 السيطرة على الخوادم ولا يمكن جعل العملاء من نشر ملفات الزناد كما اقترح S. لوت، يجب التعامل مع الحل ناقص ونقل المخاطر ملف غير مكتمل، وربما عن طريق الانتظار لفترة من الوقت و مقارنة أحجام الملفات قبل وبعد.

ويمكنك محاولة إعادة تسمية كما اقترحتم، ولكن لديك 0 التحكم الذي لا يمكن أن يكون على يقين من أن بروتوكول نقل الملفات خادم المسؤول (أو خلفه بهم) لا يغير منصات أو خوادم بروتوكول نقل الملفات أو يقيد الأذونات الخاصة بك.

وعذرا.

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

لا يمكنك معرفة متى يتم الانتهاء من نسخة نظام التشغيل.يمكن أن تبطئ أو تنتظر.

للحصول على اليقين المطلق، تحتاج حقًا إلى ملفين.

  • الملف الضخم.
  • وملف الزناد الصغير.

يمكنهم العبث بالملف الضخم كما يريدون.ولكن عندما يلمسون ملف التشغيل، فإنك تقوم بتنزيل كليهما.


إذا لم تتمكن من الحصول على محفز، فيجب عليك موازنة الوقت اللازم للاقتراع مقابل الوقت المطلوب للاقتراع.الوقت اللازم للتحميل.

افعل هذا.

  1. احصل على قائمة.تحقق من الطوابع الزمنية.

  2. التحقق من الأحجام مقابل.الحجم السابق للملفإذا لم يكن الحجم قريبًا، فسيتم نسخه الآن.انتظر؛قم بالتكرار في هذه الخطوة حتى يقترب الحجم من الحجم السابق.

  3. أثناء عدم الانتهاء:

    أ.احصل على الملف.

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

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