1 votos

El uso de zgrep en una unidad remota consume espacio en mi Mac local

Me conecto a una unidad remota a través del protocolo WebDAV, donde tengo una carpeta llena de unos 143 .tar.gz archivos que contienen vertidos de datos donde estoy tratando de encontrar mi correo electrónico.

Para ello, utilizo este comando:

zgrep -a "my@email.com" /Volumes/storage.address.name/home/folder/Collection\ \#2-\#5\ \&\ Antipublic/*

Una vez que el comando se ejecuta, puedo ver que mi espacio libre en mi MacBook local, desde donde ejecuto el mencionado comando, desaparece rápidamente, como 0,5 GB por minuto. Si dejo que el comando se ejecute, me quedaría totalmente sin espacio.

¿Podría alguien decirme por qué ocurre esto o cómo evitarlo?

1voto

Douglas Puntos 10417

Una vez que el comando se está ejecutando, puedo ver mi espacio libre en mi MacBook local ... desaparecer rápidamente ... ¿Podría alguien decirme por qué ocurre esto o cómo evitarlo?

Operar localmente mientras se conecta remotamente

El comando está actuando sobre esos archivos como si fueran local incluso cuando no lo son. Los sistemas *nix tienen esta maravillosa característica donde puedes montar casi cualquier cosa como si fuera un archivo/directorio local. Esta "característica" es donde se está ejecutando en este problema.

Para operar con el archivo, tiene que "descargarlo" del remoto, mantenerlo en memoria y, si es necesario, recurrir al espacio de intercambio. Si necesita descomprimirlo (bzip, gzip, comprimir, etc.) es probable que utilice un archivo temporal (por ejemplo mktemp ). Dado que su comando está operando localmente, todos los recursos que utilizará serán locales también - no sabe que debe utilizar su remoto para el espacio temporal.

Puedes hacer un sencillo experimento para mostrar cómo funciona: mover un archivo de un directorio remoto a otro. Usando un simple montaje en un NAS ( /Volumes/NAS/ ) si intentas moverte /Volumes/NAS/folder1/* a /Volumes/NAS/folder2/ En este caso, esta simple operación necesitará "descargar" los archivos en la máquina local, y luego subirlos a la carpeta de destino. Sin embargo, si usted se conecta directamente al servidor y emite el comando mover allí - por ejemplo, mv /home/username/folder1/* /home/username/folder2 ocurrirá casi instantáneamente.

En su caso, tiene que extraer una serie de archivos de cada de esos .tar.gz archivos, descargarlos, almacenarlos en una ubicación temporal, y luego cargarlo en la memoria para cuando se busque el texto ASCII.

Limpieza de archivos temporales...

Una consideración importante a tener en cuenta es que los archivos temporales no se limpian hasta que el proceso ha finalizado o ha terminado anormalmente; si el desarrollador fue bueno al respecto. Si no, esos archivos temporales se limpiarán al reiniciar.

Si tienes 200GB de archivos para buscar y un Macbook Air con 128GB o 256GB de almacenamiento, te quedarás sin espacio muy rápidamente llenándolo sólo con archivos temporales.

Cómo prevenirlo

Realiza la operación en el propio servidor (máquina remota). En lugar de montar el archivo/directorio remoto localmente y operar en él localmente, conéctese vía SSH (por ejemplo) y emita su comando en el propio remoto.

¿Puede especificar una ubicación diferente para el directorio temporal como el remoto?

Técnicamente sí. Por ejemplo, gzip utiliza /tmp y puede establecer su variable de entorno en un directorio temporal remoto (por ejemplo /Volumes/NAS/tmp ). El problema es que todavía está operando en el archivo localmente, por lo que "descargaría" el archivo, y luego mientras se extrae, "subiría" todos los bits extraídos a la remota.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X