it-swarm.asia

كيفية إنشاء ملف مضغوط متوافق مع ويندوز تحت لينكس

أحتاج إلى جعل ملف Zip متاحًا لجميع زوار Windows ، لذا أنتجت بسذاجة ملف Zip باستخدام أمر Unix Zip (دعنا نسميها madeinlinux.Zip).

يتم فتحه بنجاح باستخدام WinRar أو Winzip ، ولكن فشل المستخدمون الذين يستخدمون تجربة التعامل مع ملفات Windows Zip القياسية عند محاولة فك الضغط. (ويندوز إكس بي)

قمت بضغط نفس البيانات باستخدام تقنية Zip Zip المضمنة في نظام Windows ، ومن وجهة نظر Linux ، لا أستطيع رؤية أي اختلاف في نوع الملف:

$ file madeinlinux.Zip :  Zip archive data, at least v2.0 to extract
$ file madeinwindows.Zip : Zip archive data, at least v2.0 to extract

يجب أن تكون شيئًا خاصًا بملف مضغوط متوافق مع Windows.

لا أحد يعرف ماذا؟

47
user3213

محاولة مع:

Zip -9 -y -r -q file.Zip folder/
  • -9 يشير إلى أبطأ سرعة ضغط (الضغط الأمثل ، يتجاهل قائمة اللاحقة)
  • -y تخزين الروابط الرمزية على هذا النحو في أرشيف Zip ، بدلاً من ضغط وتخزين الملف المشار إليه بواسطة الرابط
  • -r السفر هيكل الدليل بشكل متكرر
  • -q الوضع الهادئ
26
Igor Fobia

7Zip هي أداة ضغط مفتوحة المصدر تعمل على أنظمة Linux و FreeBSD و Mac OS X و BeOS و DOS و Amiga و Windows.

سأكون في غاية يوصي به على أساس نسخة ويندوز.

انه يدعم

التعبئة/التفريغ: 7z ، Zip ، GZIP ، BZIP2 و TAR

التفريغ فقط: ARJ و CAB و CHM و CPIO و DEB و DMG و HFS و ISO و LZH و LZMA و MSI و NSIS و RAR و RPM و UDF و WIM و XAR و Z.

11
Bruce McLeod

Zip -Z يضبط خيار الضغط. -Z store هو الأكثر تافها ، لأنه لا يضغط على الإطلاق. يكون هذا مفيدًا عند استخدام Zip كبديل لـ tar ، أو عند استكشاف الأخطاء وإصلاحها. في هذه الحالة ، يجب أن تحاول معرفة ما إذا كان أرشيف غير مضغوط قابل للاستخدام من Windows. إذا كان هذا قابلاً للاستخدام ، فأنت تعلم أنه سيتعين عليك اختيار خيار ضغط غير افتراضي.

8
MSalters

الشيء الوحيد الذي يبدو ذات صلة هو هذا

-k - Attempt  to  convert  the  names  and paths to conform to MSDOS, store only the MSDOS attribute (just the user write attribute from UNIX), and mark the entry as made under
MSDOS (even though it was not); for compatibility with PKUNZIP under MSDOS which cannot handle certain names such as those with two dots.

لكن اقرأ "man Zip" على نظامك قبل الذهاب إلى أي مكان آخر ...

7
Dan Rosenstark

بالإضافة إلى ما اقترحه الآخرون ، من المهم الانتباه إلى أسماء الملفات والدليل الخاصة بك لأن Windows لا يحب بالضرورة مسار ملف Linux والأسماء. في بعض الأحيان أيضا يهرب منهم بشكل مختلف عند الضغط. الأمثلة عديدة ، ولكن الأهم ملفات نقطة (. و ..) ، ملفات ذات اختلافات حالة فقط (name.txt و NAME.txt) ، مسارات الملفات المطلقة (/tmp/file.txt) . قد تتسبب بعض الأحرف الأخرى المسموح بها في أسماء الملفات على Windows في حدوث مشكلات عند استخدام مستكشف Windows لفتح الملفات. في حالتي ':' كانت الشخصية هي الفاصل في الصفقة ولكنها بذلت الكثير من العمل لاكتشاف ذلك.

لذلك قبل أن تستأنف استخدامك للعديد من المعلمات ، أقترح اتباع إجراء بسيط:

  1. حدد موقع المجلد أو قم بتنسيق ملف zip الخاص بك.

  2. المدى: الرمز البريدي -9 - ص - ك الرمز البريدي - المعدل - الرمز البريدي/المسار/إلى/مجلدك

  3. انتبه إلى ما تبثه وحدة التحكم. في حالتي ':' في أسماء الملفات تم تجريدها.
  4. انقل ملف Zip إلى جهاز windows وحاول فتحه.

إذا نجح هذا الأمر ، فقد يكون من الأفضل لك إزالة الأحرف التي تم تجريدها من الخيار -k من أسماء الملفات/الدلائل ، فجرّب استخدام zipping بشكل طبيعي. لاحظ أن بعض المعلمات مثل -k لها آثار جانبية. في هذه الحالة ، يتناقض مع k مع خيار -q (للروابط sym).

أيضا -k الخيار قد يجعل أسماء الملفات الخاصة بك غير قابلة للقراءة. في حالتي ، تم تسمية ملفاتي على أساس وقت الإنشاء (على سبيل المثال 10: 55: 39.pdf) لتسهيل تحديد موقع السجل المطلوب بسهولة من الأرشيف ، ولكن خيار -k حوله إلى 105539.pdf والذي لا يمكن للمستخدمين قراءته بسهولة. لقد غيرت الأسماء إلى 10_55_39.pdf التي تفتح على نظام التشغيل Windows دون استخدام الخيار -k ولكن لا تزال قابلة للقراءة.

4
Shakus

كان لديه مشكلة مماثلة في الآونة الأخيرة مع الملفات المنتجة من البرنامج النصي بيرل. وجدت أن windows الأصلي Zip (تم اختباره في Windows 7 فقط) بشكل غير صحيح يعالج المسارات بشرطة مائلة أولية ويعرض ملف zipfile فارغًا. كان الحل هو تجريد الشرطة المائلة قبل إضافة الملفات. ربما بعض إصدارات مسارات ملف أوامر linux Zip مع خطوط مائلة بادئة.

3
Nicholas Hardy

إليك برنامج نصي بيثون أستخدمه لضغط بعض الملفات. وقد تم اختباره على أوبونتو وفيستا. الرمز البريدي الذي تم إنشاؤه على أوبونتو يفتح مع ويندوز فيستا سحاب.

أعتقد أن لدي مشكلة مماثلة في الماضي وكان ذلك بسبب أن تنسيق Zip لم يكن Zip_DEFLATED. أنا غير متاكد. سوف تحقق ذلك.

اتمني ان يكون مفيدا

 import zipfile 
 import glob، os، sys 
 
 class ZipArchive: 
 
 def Zip_it (self، dirName، files) : 
 dirNamePrefix = dirName + "/ *" 
 لاسم الملف في glob.glob (dirNamePrefix): 
 إذا كان os.path.isfile (اسم الملف) و (ليس self.exclude_svn أو ( filename.find (". svn \\") == - 1)): 
 اسم ملف الطباعة 
 name = اسم الملف [len (self.folder) +1:] 
 .archive.write (اسم الملف ، الاسم ، zipfile.Zip_DEFLATED) 
 
 def def (self، folder، name، exclude_svn): 
 self.exclude_svn = exclude_svn 
 self.folder = folder 
 self.archive = zipfile.ZipFile (name + ". Zip"، "w") 
 os.path.walk (self.folder، ZipArchive.Zip_it، self) 
 self.archive.close () 
 
 إذا __== "__main __": 
 إذا (len (sys.argv) == 1): 
 طباعة "use zipit folder [name] [svn: yes | no]" 
 آخر: 
 name = sys.argv [1] 
 exclude_svn = False 
 
 إذا (len (sys.argv)> 2): name = sys.argv [2] 
 if (len (sys.argv)> 3): exclude_svn = (sys.argv [3] == "no") 
 
 Arch = ZipArchive () 
 Arch. تشغيل (sys.argv [1] ، الاسم ، exclude_svn) 
 طباعة "تم" [....] 
1
luc

من المحتمل أن تكون هناك مشكلة في نقل الملفات من Linux إلى Windows. إذا كنت تستخدم FTP ، فحاول تعيين نقل ثنائي (أمر bin في Windows ، قبل نقل ملفاتك من Linux إلى Windows).

0
Luis Andrés García