7z linha de comando adiciona o arquivo a um arquivo 7z de diretório simples

1

Eu gostaria de compactar o arquivo "./data/x.txt" para o caminho "./data/x.7z".

Ao executar

7z a ./data/x.txt.7z ./data/x.txt

O arquivo "./data/x.txt" contém

data/x.txt

em oposição a apenas (o que eu quero)

x.txt

No entanto, gostaria que o 7z ignorasse o caminho "./data" dentro do arquivo x.7z. Para esclarecer, gostaria que 7z simplificasse a estrutura de diretórios no arquivo 7z ao adicionar x.txt.

Isso é possível?

    
por paragbaxi 18.02.2011 / 13:35

3 respostas

1

Uma das possíveis soluções é chdir para algum diretório antes de compactar. Por exemplo:

$ cd data; 7z a ../test.7z *
$ 7z l ../test.7z
...

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2011-02-18 15:29:53 ....A            6           11  x.txt
------------------- ----- ------------ ------------  ------------------------
...

Ainda outra maneira é usar outro arquivador, por exemplo %código%. Tem muitos swithes de linha de comando úteis. Seu problema pode ser resolvido com as opções rar :

$ rar a -ep test.rar data

ou

$ rar a -ep1 test.rar data

O pedaço de -ep/-ep1 help:

  ep            Exclude paths from names
  ep1           Exclude base directory from names
    
por 18.02.2011 / 14:49
1

Descobri uma alternativa que funciona para mim. Estou utilizando o subprocesso para ligar para o 7z. O atributo cwd altera o diretório de trabalho para o comando subprocess. O código abaixo resolve meu exemplo acima, em que 'data' é o caminho do qual gostaria de adicionar um arquivo.

args = [
        '7z',
        'a',
        filename_7z,
        filename,
        ]
output = subprocess.check_output(args, cwd = 'data').decode("utf-8")
    
por 08.07.2011 / 23:25
0

o que o dr01 respondeu é geralmente correto, mas por que usar 7z para compactar um único arquivo?

Sugiro que você dê uma olhada em xz ou talvez até mesmo pxz , se disponível em sua distro. xz funciona bem com tar , versões mais recentes do tar têm o comutador "-J", que o executa em xz

Em qualquer caso, você pode usar xz para compactar um único arquivo, da mesma forma que usaria gzip ou bzip2 :

$ xz file.txt

(cria o arquivo file.txt.xz )

    
por 20.03.2011 / 22:50

Tags