Hola soy nuevo en Macs y OSX, estoy usando p7zip
cli para comprimir carpetas con archivos grandes dentro (1; 2 GB o más). Así que me las arreglé para hacer un Bash script</strkeep><strkeep> para hacerlo en proceso por lotes cuando me voy a la cama y no estoy usando el ordenador.
Este es el código:
#!/bin/bash
for folder in */
do
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=1024m -ms=on -mmt2 "${folder%/}.7z" "$folder"
done
Tengo esto en Comp7zip.sh
pongo ese archivo dentro de la carpeta principal que contiene todas las demás subcarpetas que quiero comprimir. Así que desde la terminal hago:
$cd myfolder
$./Comp7zip.sh
Luego en la terminal puedo ver cómo funciona la aplicación 7z, y comprime todas las carpetas sin problemas.
Pero como es un poco molesto, copiar el archivo .sh dentro de la carpeta y usar la terminal cada vez, uso Automator para crear un servicio y hacerlo con un par de clicks, este es el código:
#!/bin/bash
cd "$@"
for folder in */
do /usr/local/bin/7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=1024m -ms=on -mmt2 "${folder%/}.7z" "$folder"
done
Es casi lo mismo, sólo hay que añadir el cd "$@"
para usar la carpeta seleccionada en el finder, así que tengo un nuevo servicio que hace lo mismo que el .sh
lo hace.
Simplemente selecciono la carpeta que tiene todas las subcarpetas que quiero comprimir, luego elijo mi servicio desde el menú contextual del Finder, funciona bien y comprime todas las carpetas dentro de la carpeta seleccionada.
El problema es que de esta manera no puedo ver la aplicación 7z mientras está trabajando, toda la compresión se hace en segundo plano con sólo un icono de un pequeño engranaje en la barra de menú que indica que la compresión se está ejecutando, y nada más.
Así que con archivos pequeños esto no es un problema la compresión termina rápido, pero con archivos grandes, no puedo ver como el trabajo de compresión lo hace.
Así que la pregunta es, ¿cómo puedo hacer que Automator me muestre la tarea en ejecución de la misma manera que lo hace el método con el archivo .sh Bash?
También, ¿alguna idea de cómo añadir a este proceso una forma de comprimir archivos fuera de las subcarpetas de la carpeta seleccionada? Quiero decir que todo este código sólo funciona con carpetas y su contenido, pero no con archivos, así que ¿cómo puedo hacer que funcione con carpetas y archivos en el mismo proceso?
Siento mi gramática, el inglés no es mi lengua materna.
0 votos
Con muchas de las aplicaciones de compresión, basta con arrastrar la carpeta al icono de la aplicación para que la carpeta y el contenido se compriman, normalmente con una barra de progreso mostrada en el icono.
0 votos
Eso ya lo sé, pero normalmente esas aplicaciones no dejan configurar la compresión máxima, o son sólo zip, en este caso el compresor es 7z y el comando que puse da uno de los mejores ratios de compresión y son ideales para archivos grandes.