En algunas situaciones, es posible que desee truncar (vaciar) un archivo existente a una longitud cero. En palabras simples, truncar un archivo significa eliminar el contenido del archivo sin eliminarlo.
Truncar un archivo es mucho más rápido y fácil que eliminarlo, volver a crearlo y establecer los permisos y la propiedad correctos. Además, si un proceso abre el archivo, eliminarlo puede causar que el programa que lo usa no funcione correctamente.
Este tutorial explica cómo truncar archivos a tamaño cero en sistemas Linux usando la redirección de shell y truncate
comando.
Redirección de shell #
El método más fácil y más usado para truncar archivos es usar el >
operador de redirección de shell.
El formato general para truncar archivos usando la redirección es:
: > filename
Analicemos el comando:
- El
:
dos puntos significatrue
y no produce resultados. - El operador de redirección
>
redirigir la salida del comando anterior al archivo dado. filename
, el archivo que desea truncar.
Si el archivo existe, se truncará a cero. De lo contrario, se creará el archivo.
En lugar de :
también puede usar otro comando que no produzca ningún resultado.
Aquí hay un ejemplo del uso del cat
comando para generar el contenido de /dev/null
dispositivo, que devuelve solo un carácter de fin de archivo:
cat /dev/null > filename
Otro comando que se puede usar es echo
. El -n
opción le dice a echo
no añadir una nueva línea:
echo -n > filename
En la mayoría de los shells modernos, como Bash o Zsh, puede omitir el comando antes del símbolo de redirección y usar:
> filename
Para poder truncar un archivo, debe tener permisos de escritura en el archivo. Por lo general, usaría sudo
para esto, pero los privilegios de raíz elevados no se aplican a la redirección. Aquí hay un ejemplo:
sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied
Hay varias soluciones que permiten redirigir con sudo
. La primera opción puede ejecutar un nuevo shell con sudo y ejecutar un comando dentro de ese shell usando -c
bandera:
sudo sh -c '> filename'
Otra opción es canalizar la salida al tee
comando, eleva el tee
privilegios con sudo
y escribe la salida vacía en un archivo dado:
: | sudo tee filename
truncate
Comando #
truncate
es una utilidad de línea de comandos que le permite reducir o ampliar el tamaño de un archivo a un tamaño determinado.
La sintaxis general para truncar archivos a tamaño cero con truncate
comando, es el siguiente:
truncate -s 0 filename
El -s 0
La opción establece el tamaño del archivo en cero.
Por ejemplo, para vaciar el registro de acceso de Nginx, usaría:
sudo truncate -s 0 /var/log/nginx/access.log
Vaciar todos los archivos de registro #
Con el tiempo, su unidad de disco puede llenarse con una gran cantidad de archivos de registro grandes que ocupan grandes cantidades de espacio en disco.
El siguiente comando vaciará los archivos que terminan en ".log" en /var/log
directorio:
sudo truncate -s 0 /var/log/**/*.log
Una mejor opción sería rotar, comprimir y eliminar los archivos de registro con logrotate
herramienta.
Conclusión #
Para truncar un archivo en Linux use el operador de redirección >
seguido del nombre del archivo.
Si tiene alguna pregunta o comentario, deje un comentario a continuación.