Eu preciso disponibilizar um arquivo zip para todos os visitantes de meus usuários do Windows, então eu produzi um arquivo zip com o comando zip do Unix (vamos chamá-lo de madeinlinux.zip).
Ele é aberto com sucesso com o WinRar ou o Winzip, mas os usuários que estão usando o manuseio de arquivos zip padrão do Windows sofrem falha ao tentar descompactá-lo. (Windows XP)
Compactei os mesmos dados usando o mecanismo zip interno do Windows e, do ponto de vista do Linux, não vejo diferença no tipo de arquivo:
$ file madeinlinux.zip : Zip archive data, at least v2.0 to extract
$ file madeinwindows.zip : Zip archive data, at least v2.0 to extract
Eles devem ser algo específico para um arquivo zip compatível com o Windows.
Alguém sabe o que?
Respostas:
Tente com:
-9
Indica a velocidade de compactação mais lenta (compactação ideal, ignora a lista de sufixos)-y
Armazene links simbólicos como tais no arquivo zip, em vez de compactar e armazenar o arquivo referido pelo link-r
Percorrer a estrutura de diretórios recursivamente-q
Modo silenciosofonte
-r
) e-r
permite que você pegue todo o conteúdo da pastaO 7zip é uma ferramenta de compactação de código aberto que funciona em Linux, FreeBSD, Mac OS X, BeOS, DOS, Amiga e Windows.
Eu recomendo com base na versão do Windows.
Suporta
fonte
A única coisa que parece relevante é essa
mas leia "man zip" no seu sistema antes de ir para outro lugar ...
fonte
zip -Z
define a opção de compactação.-Z store
é o mais trivial, pois não é compactado. Isso é útil quando você está usandozip
como alternativatar
ou na solução de problemas. Nesse caso, você deve tentar verificar se um arquivo descompactado é utilizável no Windows. Se isso for utilizável, você saberá que precisará escolher uma opção de compactação não padrão.fonte
Além do que os outros sugeriram, é importante prestar atenção aos nomes de arquivos e diretórios, pois o Windows não gosta necessariamente dos nomes e caminho dos arquivos do Linux. Às vezes, também os escapa de maneira diferente ao fechar. Os exemplos são numerosos, mas o mais importante são os arquivos de ponto (. E ..), arquivos com apenas diferenças de maiúsculas e minúsculas (name.txt e NAME.txt), caminhos de arquivo absolutos (/tmp/file.txt) . Alguns outros caracteres permitidos nos nomes de arquivos no Windows podem causar problemas quando o Windows Explorer é usado para abrir arquivos. No meu caso, o personagem ':' foi o rompedor de acordos, mas foi preciso muito trabalho para descobrir isso.
Portanto, antes de você continuar usando vários parâmetros, sugiro seguir um procedimento simples:
Localize a pasta ou arquivo que está fechando.
execute: zip -9 -r -k zip-modified-names.zip / path / to / your / folder
Se isso funcionar, é melhor remover os caracteres que foram retirados pela opção -k dos nomes de arquivos / diretórios e tente fechar normalmente. Observe que alguns parâmetros como -k têm efeitos colaterais. Nesse caso, -k contradiz a opção -q (para links sym).
A opção -k também pode tornar os nomes dos arquivos ilegíveis. No meu caso, meus arquivos foram nomeados com base no tempo de criação (por exemplo, 10: 55: 39.pdf) para facilitar a localização fácil do registro necessário dos arquivos, mas a opção -k o transformou em 105539.pdf, que não é facilmente legível pelos usuários. Alterei os nomes para 10_55_39.pdf, que é aberto no Windows sem usar a opção -k, mas ainda é legível.
fonte
Recentemente, tive um problema semelhante com arquivos produzidos a partir de um script perl. Verificou que o zip nativo do Windows (somente Windows 7 testado) manipula incorretamente os caminhos com uma barra inicial e exibe um arquivo zip vazio. A solução foi remover a barra principal antes de adicionar arquivos. Talvez algumas versões do comando linux zip armazenem caminhos de arquivos com barras principais.
fonte
Aqui está um script python que estou usando para compactar alguns arquivos. Foi testado no ubuntu e no Vista. Um zip gerado no Ubuntu é aberto com o zíper do Vista.
Acho que tive um problema semelhante no passado e foi porque o formato zip não era ZIP_DEFLATED. Não tenho certeza. Vou verificar isso.
Espero que ajude
fonte
Provavelmente, há um problema na transferência de arquivos do Linux para o Windows. Se você estiver usando FTP, tente definir uma transferência binária (comando bin no Windows, antes da transferência de seus arquivos do Linux para o Windows).
fonte