كيف يمكنني معرفة ما إذا كان الملف على نظام الملفات عن بعد مع بيرل؟

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

  •  08-07-2019
  •  | 
  •  

سؤال

هل هناك طريقة سريعة وقذرة لنقول برمجيا في شيل أو في بيرل، سواء يقع مسار على نظام الملفات عن بعد (نظام ملف الشبكة أو ما شابه ذلك) أو واحد المحلي؟ أو هي الطريقة الوحيدة للقيام بذلك تحليل / الخ / fstab وتحقق نوع نظام الملفات؟

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

المحلول

وstat -f -c %T <filename> أن تفعل ما تريد. قد ترغب أيضا -l

نصائح أخرى

ويمكنك استخدام "مدافع -T" للحصول على نوع نظام الملفات للدليل، أو استخدام الخيار -t للحد من التقارير إلى أنواع معينة (مثل NFS) وإذا كان يعود مع "لا أنظمة الملفات معالجتها"، ثم انها ليست واحدة من تلك التي كنت تبحث عنها.

df -T $dir | tail -1 | awk '{print $2;}'

إذا كنت تستخدم df على دليل للحصول على معلومات فقط للجهاز أنه يقيم فيها، مثل الدليل الحالي:

df .

وبعد ذلك، يمكنك تحليل فقط الإخراج، منها مثلا.

df . | tail -1 | awk '{print $1}'

للحصول على اسم الجهاز.

ولقد اختبرت ما يلي على solaris7،8،9 و 10، ويبدو أنه يمكن التعويل عليها

/bin/df -g <filename> | tail -2 | head -1 | awk '{print $1}'

ويجب أن تعطي لديك نوع خ م بدلا من محاولة لمطابقة ل"المضيف: المسار". في نقطة التحميل الخاص بك

في بعض النظم، ورقم الجهاز هو سلبي عن الملفات NFS. وهكذا،

print "remote" if (stat($filename))[0] < 0
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top