Zip dosyaları Linux'ta ters eğik çizgilerle genişler, alt dizinler olmaz


0

Yani, garip bir şekilde, bir arkadaşımın pencerelerinde açtığını açabilirim. Verdiği şey garip ve daha önce görmediğim şekilde yanlış.

<base directory stuff>
assets\Changes.txt
assets\DefaultConfig,txt

Ve bunun gibi. Açıkça bir alt dizin olması gerekiyordu, ancak içlerinde ters eğik çizgi bulunan dosyalar olarak ortaya çıkıyorlar.

Windows'da (Compress-Archive powerscript komutunu kullanarak) yaptılar, her ikisini de kullanarak Linux'ta çıkartmaya çalıştım. ark KDE'den program ve GNOME'dan arşiv yöneticisi.

Burada neler oluyor?


Evet, fakat iki ya da daha az farklı araçta gerçekleşmesi yerine, bunun neden olduğunu bilmek istiyorum.
jaked122

Yanıtlar:


1

Bazı Windows araçlarının görünüşte ters eğik çizgi kullanması nedeniyle oluşur ( \ ) eğik çizgi kullanmaları gereken ayırıcılar olarak ( / ). Unix'deki ters eğik çizgi, dosya veya dizin adının bir parçası olabilir.

.ZIP Dosya Biçimi Özellikleri (sürüm: 6.3.5, bunu yazarken, 20 Kasım 2018 tarihini gözden geçirdi) belirtir:

4.4.17.1 İsteğe bağlı göreli yol ile dosyanın adı.   Saklanan yol bir sürücü içermemelidir veya   aygıt mektubu veya önde gelen eğik çizgi. Tüm eğik çizgiler   Eğik çizgiler olmalı / aksine   geriye eğik çizgi \ Amiga ile uyumluluk için   ve UNIX dosya sistemleri vb. girdiler standart ise   giriş, dosya adı alanı yok.

Bu dosya Microsoft tarafından bir belgede belirtiliyor Azaltma: ZipArchiveEntry.FullName Yol ayırıcı :

.NET Framework 4.6.1’i hedefleyen uygulamalarla başlayarak, ZipArchiveEntry.FullName özellik ters eğik çizgiden değişti ( \ .NET Framework’ün önceki sürümlerinde eğik çizgi olarak kullanılır ( / ). [...]

darbe

Değişiklik, .NET uygulamasını, Bölüm 4.4.17.1’e uygun .ZIP Dosya Biçimi Özellikleri ve .ZIP arşivlerinin Windows olmayan sistemlerde sıkıştırılmasını sağlar.

.NET Framework'ün önceki Windows sürümünü, Macintosh gibi Windows işletim sistemlerinde hedefleyen bir uygulama tarafından oluşturulan zip dosyasının sıkıştırmasını açma dizin yapısını koruyamaz. Örneğin, Macintosh'ta, dosya adı dizin yolunu birleştiren ve herhangi bir ters eğik çizgiyle birleştirilmiş bir dosya kümesi oluşturur ( \ ) karakterler ve dosya adı. Sonuç olarak, sıkıştırılmış dosyaların dizin yapısı korunmaz.

Arşiv, .NET Framework'ün bazı eski sürümlerini kullandıysa veya hiç kullanmamışsa, ancak zip dosyalarına kendi (bağımsız) yaklaşımını uyguladıysa sorun olabilir.

Kişi rar ile aynı sorunu yaşayabilir: Uygun dizini hiyerarşisi yerine, adlarında ters eğik çizgi bulunan dosyalar oluşturma .

Bu soruyu Unix & amp; Linux SE yardımcı: Windows tarafından oluşturulan bir ZIP’ü Linux’a dönüştürme (dahili yollar sorunu) . Benim (biraz deneysel) yaklaşımım bu cevapta .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.