it-swarm-vi.tech

Làm thế nào để làm thế nào

Tôi cần phải cung cấp một tệp Zip cho tất cả khách truy cập Windows của mình, vì vậy tôi đã ngây thơ tạo ra một tệp Zip bằng lệnh Unix Zip (hãy gọi nó là madeinlinux.Zip).

Nó mở thành công với WinRar hoặc Winzip, nhưng những người dùng của tôi đang sử dụng trải nghiệm xử lý tệp Windows Zip tiêu chuẩn không thành công khi cố gắng giải nén nó. (Windows XP)

Tôi đã nén cùng một dữ liệu bằng cách sử dụng mecanism Zip tích hợp của Windows và theo quan điểm của Linux, tôi không thể thấy bất kỳ sự khác biệt nào trong loại tệp:

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

Chúng phải là một cái gì đó cụ thể cho tệp Zip tương thích với Windows.

Có ai biết cái gì không?

47
user3213

Hãy thử với:

Zip -9 -y -r -q file.Zip folder/
  • -9 Cho biết tốc độ nén chậm nhất (nén tối ưu, bỏ qua danh sách hậu tố)
  • -y Lưu trữ các liên kết tượng trưng như vậy trong kho lưu trữ Zip, thay vì nén và lưu trữ tệp được liên kết tham chiếu
  • -r Du lịch cấu trúc thư mục theo cách đệ quy
  • -q Chế độ im lặng
26
Igor Fobia

7Zip là một công cụ nén nguồn mở hoạt động trên Linux, FreeBSD, Mac OS X, BeOS, DOS, Amiga và Windows.

Tôi rất muốn giới thiệu nó dựa trên phiên bản windows.

Nó hỗ trợ

đóng gói/giải nén: 7z, Zip, GZIP, BZIP2 và TAR

Chỉ giải nén.

11
Bruce McLeod

Zip -Z đặt tùy chọn nén. -Z store là một thứ tầm thường nhất, vì nó hoàn toàn không nén. Điều này hữu ích khi bạn đang sử dụng Zip thay thế cho tar hoặc khi khắc phục sự cố. Trong trường hợp này, bạn nên thử xem liệu một kho lưu trữ không nén có thể sử dụng được từ Windows hay không. Nếu điều đó is có thể sử dụng, bạn biết rằng bạn sẽ phải chọn tùy chọn nén không mặc định.

8
MSalters

Điều duy nhất có vẻ phù hợp là

-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.

nhưng hãy đọc "man Zip" trên hệ thống của bạn trước khi đi bất cứ nơi nào khác ...

7
Dan Rosenstark

Ngoài những gì người khác đề xuất, điều quan trọng là phải chú ý đến tên tệp và thư mục của bạn vì Windows không nhất thiết phải giống như tên và đường dẫn tệp Linux. Nó đôi khi cũng thoát chúng khác nhau khi nén. Ví dụ có rất nhiều, nhưng quan trọng nhất là tệp chấm (. Và ..), các tệp chỉ có trường hợp khác biệt (name.txt và NAME.txt), đường dẫn tệp tuyệt đối (/tmp/file.txt ) . Một số ký tự khác được cho phép trong tên tệp trên Windows có thể gây ra sự cố khi Windows Explorer được sử dụng để mở tệp. Trong trường hợp của tôi ':' nhân vật là người phá vỡ thỏa thuận nhưng mất rất nhiều công sức để tìm ra điều này.

Vì vậy, trước khi bạn tiếp tục sử dụng nhiều tham số, tôi khuyên bạn nên làm theo một quy trình đơn giản:

  1. Xác định vị trí thư mục hoặc tập tin nén của bạn lên.

  2. chạy: Zip -9 -r -k Zip-modified-names.Zip/path/to/your/thư mục

  3. chú ý đến những gì bảng điều khiển phun ra. Trong trường hợp của tôi ':' trong tên tệp đã bị loại bỏ.
  4. Di chuyển tệp Zip sang máy windows và cố gắng mở nó.

Nếu điều này hoạt động, bạn có thể tốt hơn nên loại bỏ các ký tự đã bị loại bỏ bởi tùy chọn -k khỏi tên tệp/thư mục của bạn hãy thử nén bình thường. Lưu ý một số tham số như -k có tác dụng phụ. Trong trường hợp này -k mâu thuẫn với tùy chọn -q (đối với liên kết sym).

Ngoài ra tùy chọn -k có thể khiến tên tệp của bạn không thể đọc được. Trong trường hợp của tôi, các tệp của tôi được đặt tên dựa trên thời gian tạo (ví dụ: 10: 55: 39.pdf) để tạo điều kiện dễ dàng định vị bản ghi cần thiết từ kho lưu trữ, nhưng tùy chọn -k đã chuyển thành 105539.pdf mà người dùng không dễ đọc. Do đó, tôi đã thay đổi tên thành 10_55_39.pdf mở trên Windows mà không sử dụng tùy chọn -k nhưng vẫn có thể đọc được.

4
Shakus

Gần đây có một vấn đề tương tự với các tệp được tạo từ tập lệnh Perl. Tìm thấy rằng các cửa sổ gốc Zip (chỉ kiểm tra Windows 7) xử lý không chính xác các đường dẫn với dấu gạch chéo hàng đầu và hiển thị một tệp zip trống. Giải pháp là loại bỏ dấu gạch chéo hàng đầu trước khi thêm tệp. Có lẽ một số phiên bản của lệnh linux Zip lưu trữ đường dẫn tệp với dấu gạch chéo hàng đầu.

3
Nicholas Hardy

Đây là một kịch bản python mà tôi đang sử dụng để Zip một số tệp. Nó đã được thử nghiệm trên Ubuntu và Vista. Một Zip được tạo trên Ubuntu mở bằng khóa kéo Vista.

Tôi nghĩ rằng tôi đã có một vấn đề tương tự trong quá khứ và đó là do định dạng Zip không phải là Zip_DEFLATED. Tôi không chắc. Tôi sẽ kiểm tra xem.

Tôi hy vọng nó sẽ giúp

[.__.] nhập zipfile [.__.] nhập global, os, sys [.__.] [.__.] class ZipArchive: [.__.] [.__ : [.__.] dirNamePrefix = dirName + "/ *" [.__.] cho tên tệp trong contin.glob (dirNamePrefix): [.___ filename.find (". svn \\") == - 1)): [.__.] in tên tệp [.__.] name = tên tệp .archive.write (tên tệp, tên, zipfile.Zip_DEFLATED) [.__.] [.__.] def run (self, thư mục, tên, loại trừ self.folder = thư mục [.__.] self.archive = zipfile.ZipFile (tên + ". Zip", "w") [.__. .__.] self.archive.c Đóng () [.__.] [.__.] if __== "__main __": [.__.] .] in "thư mục zipit sử dụng [tên] [svn: yes | no]" [.__.] other: [.__.] name = sys.argv [1] [.__.] loại trừ_svn = Sai [.__.] [.__ ] if (len (sys.argv)> 3): Elim_svn = (sys.argv [3] == "no") [.__.] [.__.] run (sys.argv [1], name, Elim_svn) [.__.] in "xong" [.__.] [.__.]
1
luc

Có thể có một vấn đề trong việc chuyển tập tin của bạn từ Linux sang Windows. Nếu bạn sử dụng FTP, hãy thử thiết lập chuyển nhị phân (lệnh bin trong Windows, trước khi chuyển các tệp của bạn từ Linux sang Windows).

0
Luis Andrés García