كيفية إنشاء ملف حجم أكثر من 2 جيجابايت في Linux / UNIX؟

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

  •  05-09-2019
  •  | 
  •  

سؤال

لدي هذا العمل المنزلي حيث يجب أن أقوم بنقل ملف كبير جدا من مصدر إلى آلات متعددة باستخدام Bittorrent Kinda من الخوارزمية. في البداية، أنا قطع الملفات الموجودة في القطع وأتحمل القطع إلى جميع الأهداف. تتمتع الأهداف بالمخابرات بمشاركة القطع التي لديهم بأهداف أخرى. أنه يعمل بشكل جيد. أردت نقل ملف 4 جيجابايت حتى أضحك أربعة ملفات 1GB. لم يكن هناك خطأ عندما قمت بإنشاء ملف القطران 4GB ولكن في الطرف الآخر أثناء تجميع جميع القطع مرة أخرى إلى الملف الأصلي، فقد تم تجاوز حد حجم الملف. كيف يمكنني الذهاب حول حل مشكلة الحد 2GB هذه؟

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

المحلول

أستطيع أن أفكر في سببين ممكنين:

  • ليس لديك دعم ملف كبير ممكن في نواة لينكس الخاص بك
  • لا يتم تجميع طلبك مع دعم الملفات الكبيرة (قد تحتاج إلى اجتياز إشارات إضافية من دول مجلس التعاون الخليجي لمعرفة ذلك لاستخدام إصدارات 64 بت من وظائف معينة من وظائف I / O. على سبيل المثال gcc -D_FILE_OFFSET_BITS=64)

نصائح أخرى

هذا يعتمد على نوع الملفات. وبعد عند استخدام EXT3، ليس لدي مثل هذه المشاكل مع الملفات التي تكون أكبر بكثير.

إذا كان القرص الأساسي هو الدهون أو NTFS أو CIFS (SMB)، يجب عليك أيضا التأكد من استخدام أحدث إصدار من برنامج التشغيل المناسب. هناك بعض برامج التشغيل المسن التي تحتوي على حدود بحجم الملفات مثل تلك التي تواجهها.

هل يمكن أن يكون هذا متعلقا ب تكوين قيود النظام ?

$ ulimit -a
vi /etc/security/limits.conf
vivek       hard  fsize  1024000

إذا كنت لا تريد أي حد إزالة fsize من /etc/security/limits.conf.

إذا كان نظامك يدعمه، فيمكنك الحصول على تلميحات مع: man largefile.

يجب عليك استخدام fseeko و ftello، انظر FSEEKO (3)ملاحظة يجب عليك تحديد #define _FILE_OFFSET_BITS 64

#define _FILE_OFFSET_BITS 64
#include <stdio.h>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top