En ciertas ocasiones se requiere hacer que se disminuya el tamaño de un archivo, eventualmente a tamaño cero, sin importar los contenidos del mismo, por ejemplo con archivos de logs, por una parte se puede hacer manualmente desde el shell o con un programa con una función en C para este efecto.

Manualmente con el shell

Por ejemplo un archivo como :

 -rw-r----- 1 proxy proxy 97522632 2007-05-24 07:31 log/squid/store.log

Se podría eliminar con:

 rm store.log ; touch store.log ; chown proxy:proxy store.log ; chmod 640 store.log

En la línea anterior, se eliminó el archivo se creó uno nuevo de tamaño cero, se restauró el propietario y se dieron los permisos originales, para cada archivo se deduciría el usuario y los permisos correspondientes.

Programa para truncar

A continuación un listado de un programa en C que facilita esta tarea con ayuda de la función truncate:

#include <sys/stat.h>

int main(int argc, char * argv[])
{
  struct stat info;
  int err=0;
  if(argc<2)
    {
      printf("Hace que el tamaño de un archivo se vuelva 0.\n  Uso: trunca [archivo]\n");
      exit(1);
    }
  if (stat(argv[1], &info))
    {
      printf("Problemas al leer %s\n", argv[1]);
      exit(1);
    }
  if ((err=truncate (argv[1], 0))!=0)
    {
      printf("Error al truncar %s\n", argv[1]);
    }
  return err;
}


CategoriaAyudaInterfazDeComandos CategoriaAdministradorDeRed

TruncarArchivos (last edited 2009-07-15 15:25:18 by localhost)