ماذا سيحدث اذا حاولت بيرل لدعوة حركة () على الملف الذي يتم تحميله؟

StackOverflow https://stackoverflow.com/questions/808419

  •  03-07-2019
  •  | 
  •  

سؤال

وشخص ما FTPing ملف من حجم 10MB إلى مجلد على خادم لينكس. في حين كان الملف في الانتقال كرون يستيقظ وحرائق من مخطوطة برل التي تم تصميمها لإلقاء نظرة على مجلد بروتوكول نقل الملفات ونقل ما تراه هناك لبعض مجلد بديل. أنا باستخدام وظيفة move() من الملف :: نسخة . عملية بيرل في الواقع إعادة تسمية الملفات كجزء من مهمتها. هل هذا الأمر، أم أن FTP لا يهمني ما يصف نظام الملفات الملف كملف؟

هل move() النجاح ونقل ملف جزئي، وترك FTP أن تفعل ما؟ أو سوف تتحرك تفشل والعودة 0؟

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

المحلول

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

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

نصائح أخرى

وبما أنه لا يوجد معيار move، فإنه من الصعب أن تعرف ما يحدث في السيناريو الخاص بك. إذا كنت تعني rename، فإنك على الأرجح لن يكون لها أي مشاكل، لأن الطريق الرئيسي سيكون موقفك تسوء هو لو كنت نقل الملف من نظام ملف واحد إلى آخر (وبالتالي القيام النسخ وحذف، وليس الخطوة الحقيقي)، وعلى معظم أنظمة rename ستفشل في ظل هذه الظروف. (حتى إذا كان الإعداد الخاص بك يعمل على الإطلاق، وأنها سوف تكون بخير.)

إذا كنت لا تستخدم rename ولكن بعض الوظائف move، على سبيل المثال، سوف تتعامل مع تتحرك عبر نظام الملفات، فإنك بشكل جيد للغاية يمكن أن تصل الرياح مع ملف الجزئي إذا يشاركون نظام الملفات متعددة. (هذا يمكن أن ينتهي به الأمر إلى مسكتك سيئة جدا إذا، على سبيل المثال، كنت كل يوم الملفات واحد الآن، ولكن في وقت لاحق على هذه الملفات التي تقوم بتحميلها يستغرق الكثير من الفضاء، وقمت بإضافة محرك مخصص لتخزينها - والآن تفعلونه تحرك عبر نظام الملفات.)

وأنا لست متأكدا، ولكن على الأرجح شيء خاطئ سيحدث. الانتقال لا تغيير رقم inode الملف، بحيث خادم FTP لا تلاحظ هذه الخطوة على الإطلاق، وسوف تستمر الكتابة إلى الملف في الموقع الجديد. لوضعها قريبا، فإن move() تنجح وسوف تستمر تحميل في الموقع الجديد.

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