(Tyhjien) tiedostojen typistäminen Linuxissa

kesä 15, 2021
admin

Jossain tilanteissa saatat haluta typistää (tyhjentää) olemassa olevan tiedoston nollapituuteen. Yksinkertaisesti sanottuna tiedoston typistäminen tarkoittaa tiedoston sisällön poistamista poistamatta tiedostoa.

Tiedoston typistäminen on paljon nopeampaa ja helpompaa kuin tiedoston poistaminen, sen luominen uudelleen ja oikeiden oikeuksien ja omistusoikeuden asettaminen. Lisäksi, jos tiedosto on jonkin prosessin avaama, tiedoston poistaminen voi aiheuttaa sitä käyttävän ohjelman toimintahäiriön.

Tässä opetusohjelmassa kerrotaan, miten tiedostot typistetään nollakokoisiksi Linux-järjestelmissä käyttämällä komentotulkin uudelleenohjausta ja truncate-komentoa.

Komentotulkin uudelleenohjaus #

Helpoisin ja käytetyin menetelmä tiedostojen typistämiseen on komentotulkin uudelleenohjausoperaattorin > käyttö.

Yleinen muoto tiedostojen typistämiseen uudelleenohjauksen avulla on:

: > filename

Kerrataanpa komento:

  • Kaksoispiste : tarkoittaa true eikä tuota tulosta.
  • Ohjausoperaattori > ohjaa edellisen komennon tulosteen annettuun tiedostoon.
  • filename, tiedosto, jonka haluat typistää.

Jos tiedosto on olemassa, se typistetään nollaksi. Muussa tapauksessa tiedosto luodaan.

Komennon : sijasta voidaan käyttää myös toista komentoa, joka ei tuota tulostetta.

Tässä on esimerkki catkomennon käyttämisestä /dev/null-laitteen sisällön tulostamiseen, joka palauttaa vain tiedoston loppumerkin:

cat /dev/null > filename

Muuten komento, jota voidaan käyttää, on echo. Vaihtoehto -n käskee echo:n olla liittämättä uutta riviä:

echo -n > filename

Nykyaikaisimmissa komentosuorittimissa, kuten Bashissa tai Zsh:ssä, voit jättää komennon pois ennen uudelleenohjaussymbolia ja käyttää:

> filename

Voidaksesi typistää tiedostoa sinulla täytyy olla kirjoitusoikeudet tiedostoon. Yleensä tähän käytetään sudo, mutta korotetut pääkäyttäjäoikeudet eivät koske uudelleenohjausta. Tässä on esimerkki:

sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied

On olemassa useita ratkaisuja, jotka mahdollistavat uudelleenohjauksen sudo:llä. Ensimmäisessä vaihtoehdossa voidaan ajaa uusi komentotulkki sudolla ja suorittaa komento tuon komentotulkin sisällä käyttäen -c-lippua:

sudo sh -c '> filename'

Toinen vaihtoehto on putkittaa tuloste komentoon tee, korottaa tee:n oikeuksia sudo:llä ja kirjoittaa tyhjä tuloste annettuun tiedostoon:

: | sudo tee filename

truncate Komento #

truncate on komentorivin apuohjelma, jonka avulla voit pienentää tai pidentää tiedoston kokoa tiettyyn kokoon.

Yleinen syntaksi tiedostojen typistämiseen nollakokoon komennolla truncate on seuraava:

truncate -s 0 filename

Vaihtoehto -s 0 asettaa tiedoston koon nollaan.

Tyhjentääksesi esimerkiksi Nginxin käyttölokin käyttäisit seuraavaa komentoa:

sudo truncate -s 0 /var/log/nginx/access.log

Tyhjennä kaikki lokitiedostot #

Aikojen saattaessa levyasemasi saattaa sotkeentua moniin suuriin lokitiedostoihin, jotka vievät paljon levytilaa.

Jatkossa seuraava komento tyhjentää tiedostot, jotka päättyvät muotoon ”.log” hakemiston /var/log alta:

sudo truncate -s 0 /var/log/**/*.log 

Parempi vaihtoehto olisi pyörittää, pakata ja poistaa lokitiedostot logrotatetyökalulla.

Johtopäätös #

Tiedoston typistämiseen Linuxissa käytä uudelleenohjausoperaattoria >, jota seuraa tiedoston nimi.

Vastaa

Sähköpostiosoitettasi ei julkaista.