Compactado archivos

Tengo varias entradas en el blog relacionadas con el uso de compresores (o compactadores) de archivos. Estuve considerando extender algunas de ellas (como serie de entradas) con lo que aquí quiero compartir, pero no me ha parecido lo más adecuado, por lo que esta entrada queda por el momento aislada.

No hace mucho, tuve un descuido al compactar un directorio con Jupyter notebooks, en el que incluí los checkpoints de estos (que son archivos ocultos). Los notebooks eran exámenes a aplicar y en su desarrollo fui colocando las respuestas de cada ejercicio (conformadas por una celda o grupo de celdas). Antes de enviarlos, creé una copia del notebook, saqué el original con las respuestas del directorio y lo compacté. Usualmente tengo presentes los archivos ocultos, pero en este caso, por las prisas, los olvidé. Uno de los examinados, privadamente, me señaló el error y que estos incluían las respuestas. Agradecí el señalamiento y su honradez a esta persona, y procedí con la actualización del .zip. Cosas que pasan pero que me prometí que no volverían a ocurrir.

Nuevamente he elaborado un notebook que requiero compartir con mis alumnos. No es un examen, por lo que si se fueron los checkpoints no habría mayor problema, pero revisando el ZIP, la presencia de .DS_Store y un __MACOSX me recordaron el tener cuidado al crear archivos compactados desde el Finder. Las buenas prácticas dictan que sólo incluya lo necesario.

Como desde el Finder no hay forma de controlar la inclusión de los ocultos, como tampoco desde la Archive Utility1, la única solución es hacerlo desde la línea de comandos. Curiosamente, no encontré (buscando en la web) algo simple. Me refiero a por ejemplo, poder listar los archivos con un path relativo, excluyendo los ocultos y pasar la relación de archivos al compactador entubando los comandos. Por simple me refiero a usar el comando ls o, cuando mucho, al find. Algo que fuera fácil y natural de recordar.

Aunque hay muchas respuestas y opiniones al respecto, lo mejor es controlar esto desde el comando de compactación, en este caso el zip. El comando que he terminado adoptando es el siguiente (substituir Notebooks con lo apropiado).

$ FOLDER=Notebooks; zip -r $FOLDER.zip $FOLDER/* -x "*/.*" -x "__MACOSX"

Como puede verse, esto es para cuando se desea compactar un directorio (y puede ser fácilmente modificado si se van a compactar todos los de una particular ruta). El resultado debe verificarse con

$ unzip -l Notebooks.zip

Referencias

  1. Tom Nelson, «Using the Mac’s Hidden Archive Utility to Control Compression«, lifewire.com, web. Updated: 2020.12.02; visited: 2024.11.25. URL: https://www.lifewire.com/control-compression-using-mac-hidden-archive-utility-2260851

Siguiente

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.