عند نسخ الملفات المتفرقة باستخدام io.Copy ()، غالبًا ما تتضخم كبير الحجم في الوجهة.
io.Copy() ينقل البايتات الأولية، التي تخفي وجود ثغرات في ملف متفرق - المساحات التي لا توجد فيها بيانات يقيم في الواقع. لا يمكن الوصول إلى هذه المعلومات من خلال مكالمات النظام القياسية مثل القراءة (2). على هذا النحو، io.Copy() غير قادر على الحفاظ على تناثر الملفات.
لمعالجة هذا، نحتاج إلى التعمق أكثر باستخدام حزمة syscall والمعالجة اليدوية. يمكن استخدام استدعاءات نظام Lseek(2)، مع قيم SEEK_HOLE وSEEK_DATA الخاصة، لمعالجة الثغرات الموجودة في الملفات.
إذا كنت تريد الحفاظ على تناثر الملف أثناء النقل، فإن الوضع أكثر تعقيدًا. يمكن استخدام Fallocate(2) لمحاولة إنشاء الثغرة في أنظمة الملفات المدعومة. ومع ذلك، فإن بعض أنظمة الملفات تفتقر بطبيعتها إلى دعم الثقب، مثل عائلة FAT.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3