Solución:
Para excluir el compartimiento y obj carpetas de forma recursiva puede utilizar el comando:
7z.exe a -t7z archive.7z FolderToArchive -mx0 -xr!bin -xr!obj
Para evitar errores, use -r o -xr con cuidado.
suponga que tiene directorios como:
.path1path2bin
.path1path2src
.path3path4path5bin
.path3path4path5src
y ejecuta el comando:
7z a -t7z archive.7z .path1path2 .path3path4path5 -xr!bin
lo que tienes en archive.7z:
.path2src
.path5src
Eso es el .path2
y .path5
se convirtió en el carpeta superior en archive.7z, y tanto bin
Se excluyeron los directorios.
-x solo admite ruta / nombre de archivo relativo a la carpeta superior del archivo.
Entonces, si solo desea excluir .path1path2bin
, pero para incluir todos los demás directorios ‘bin’, el comando debería ser así:
7z a -t7z archive.7z .path1path2 .path3path4path5 -x!path2bin
Intenté usar la ruta absoluta en -x, pero nunca tuve éxito.
Actualizar:
Hay una opcion -spf
en 7z para Linux que funciona con ruta absoluta.
Según Marco, -spf
también está disponible en Windows a partir de 7-zip 15.14
Basado en la respuesta de @ zhazha y aclare cómo excluir exactamente las subcarpetas. En Windows 10, para hacer una copia de seguridad de la carpeta raíz de una solución de Visual Studio:
D:VS2019Sln1
luego:
//goto the parent of the root folder first which make thing clearer
//not sure what will happen if you go into the root folder
cd D:VS2019
"<path-of-7z>7z.exe" a -tzip -mx0 Sln1_backup.zip Sln1 -x!Sln1.vs -x!Sln1Debug -x!Sln1Release -x!Sln1lib -x!Sln1Project1x64 -x!Sln1Project2obj
Entonces puede estar seguro de que solo se excluyen las subcarpetas especificadas, por ejemplo, Sln1 Project3 obj o Sln1 Project4 lib no se excluirán involuntariamente. Funciona para la enorme carpeta oculta .vs.
-mx0 significa archivo / sin compresión.