Ok, então eu quero descompactar um arquivo usando 7za; Estou em um shell MINGW64 do MSYS2 no Windows 10.
Então, primeiro abro um novo diretório vazio:
$ mkdir temp
$ cd temp/
Vamos ter certeza - este diretório está realmente vazio?
$ ls -la
total 12K
drwxr-xr-x 1 user None 0 May 20 14:23 ./
drwxr-xr-x 1 user None 0 May 20 14:23 ../
De fato, é. Vamos pegar nosso arquivo:
$ wget https://sysprogs.com/getfile/1748/openocd-20211118.7z
...
Saving to: ‘openocd-20211118.7z’
openocd-20211118.7z 100%[=================================================>] 7.97M 10.4MB/s in 0.8s
2022-05-20 14:24:32 (10.4 MB/s) - ‘openocd-20211118.7z’ saved [8359495/8359495]
Bom... Então, agora - para fins que serão revelados mais tarde - primeiro vamos inspecionar o arquivo dentro e ver onde encontraríamos o arquivo ftd2xx.lib
:
$ 7za l openocd-20211118.7z | grep ftd2xx.lib
2020-07-12 18:45:55 ....A 18652 489886 OpenOCD-20211118-0.11.0/drivers/FTDI CDM v2.08.28 Certified/amd64/ftd2xx.lib
2020-07-12 18:45:55 ....A 20418 OpenOCD-20211118-0.11.0/drivers/FTDI CDM v2.08.28 Certified/i386/ftd2xx.lib
2020-07-12 18:45:55 ....A 1014926 OpenOCD-20211118-0.11.0/drivers/FTDI CDM v2.08.28 Certified/Static/amd64/ftd2xx.lib
2020-07-12 18:45:55 ....A 904088 OpenOCD-20211118-0.11.0/drivers/FTDI CDM v2.08.28 Certified/Static/i386/ftd2xx.lib
Ok, então existem quatro desses arquivos - mas eles estão todos em seus diretórios separados; e também, parece que todo o arquivo está "embrulhado" em uma pasta "pai", OpenOCD-20211118-0.11.0 - bem, se for esse o caso, ótimo, posso apenas descompactar (como faço com unzip
)?
$ 7za e openocd-20211118.7z
7-Zip (a) [64] 17.04 : Copyright (c) 1999-2021 Igor Pavlov : 2017-08-28
p7zip Version 17.04 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Core(TM) i7-7700T CPU @ 2.90GHz (906E9),ASM,AES-NI)
Scanning the drive for archives:
1 file, 8359495 bytes (8164 KiB)
Extracting archive: openocd-20211118.7z
--
Path = openocd-20211118.7z
Type = 7z
Physical Size = 8359495
Headers Size = 14117
Method = LZMA2:24 BCJ
Solid = +
Blocks = 2
Would you like to replace the existing file:
Path: ./ftd2xx.lib
Size: 18652 bytes (19 KiB)
Modified: 2020-07-12 18:45:55
with the file from archive:
Path: OpenOCD-20211118-0.11.0/drivers/FTDI CDM v2.08.28 Certified/i386/ftd2xx.lib
Size: 20418 bytes (20 KiB)
Modified: 2020-07-12 18:45:55
? (Y)es / (N)o / (A)lways / (S)kip all / A(u)to rename all / (Q)uit? q
Archives with Errors: 1
Break signaled
Espere o que? POR QUE eu iria querer um arquivo sobrescrito ???
Comecei a partir de uma pasta vazia (confirmada anteriormente) e posso ver na listagem que todos esses arquivos estão agrupados em uma pasta pai, que contém pastas individuais ... Por que diabos haveria um arquivo que seria substituído?
Então, vamos ver o conteúdo da pasta agora:
$ ls
amd64/ drivers/ libdcc/ Static/ xmc1xxx/
arc/ erase_check/ lm3s/ ST-Link/ xscale/
arm/ flash/ loaders/ stm32/ xsvf_tools/
at91/ fm4/ marvell/ target/ driver.xml
at91sam7x/ fpga/ openocd/ test/ ftd2xx.h
atmel/ ft232r/ OpenOCD-20211118-0.11.0/ ti/ ftd2xx.lib
bin/ ftdi/ OpenULINK/ tools/ ftdibus.cat
board/ 'FTDI CDM v2.08.28 Certified'/ remote_bitbang/ transport/ ftdibus.inf
checksum/ gti/ rpc_examples/ watchdog/ ftdiport.cat
chip/ i386/ rtos-helpers/ WinUSB/ ftdiport.inf
contrib/ infineon/ scripts/ WinUSB_Mini/ openocd-20211118.7z
cpld/ interface/ share/ x64/
cpu/ kinetis/ spear/ x86/
debug/ kinetis_ke/ st/ xds110/
O QUE???! De onde veio tudo isso???
O conteúdo deste arquivo não deveria estar em uma pasta pai chamada OpenOCD-20211118-0.11.0/
? Por que estou vendo todas essas subpastas aqui, e não apenas uma única OpenOCD-20211118-0.11.0/
subpasta?
O que está acontecendo aqui - e como posso descompactar um arquivo 7z, com a estrutura de pastas empacotada intacta?
Você pode tentar executar o comando desta maneira:
x
irá garantir que você extraiu arquivos com caminhos completos