Script som tar bort gamla filer

Trädvy Permalänk
Medlem
Registrerad
Nov 2005

Script som tar bort gamla filer

Har precis installerat en server/router precis som jag vill ha den Bortsett från en liten detalj.

Via samba ska användarna i nätverket kunna temporärt dela filer (alltså istället för att lägga över en fil på USB-minne och gå över till den andra datorn, lägger man upp dom på en samba share). Eftersom detta bara ska vara tillfälligt vill jag inte att det ska ligga massa filer och äta upp hårddisken.

Jag är inte jättevan vid Linux eller mer specifikt Ubuntu som är disten på min server och speciellt inte på att skriva script. Det jag letar efter är ett script som söker igenom en viss katalog och tar bort alla filer som är äldre än typ 30 dagar. I windows kan man ju se när en fil skapades och ändrades senast. Om det finns en liknade funktion i linux (jag antar att det beror på filsystem som i det här fallet är ext3) skulle man väl kunna hämta det till scriptet och kontrollera mot ett gränsvärde (alltså dagens datum minus 30 dagar). Sedan lägga in via crontab så att scriptet körs en gång per dag.

Har sökt på Internet och hittat några script men förstår inte riktigt hur de fungerar och därmed vet inte hur de ska ändras för att passa mig och sen känns det inte så bra att köra ett script som man inte vet hur det fungerar eller gör, speciellt när den ska ta bort filer...

Så skulle vara tacksam om någon skulle hjälpa mig! Skulle vara jättebra om den personen även förklara hur scriptet fungerar

Tack på förhand!

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Okt 2006

find . -type f -atime +30 -exec rm {} \;

tar bort filer i mappen som du står i som är äldre än 30 dagar, för att vara exakt så tar den bort filer som ingen rört på 30 dagar, om du byter till ex -mtime blir det 30 dagar sedan någon ändrade på filen.

"Stallman to Dvorak: Welcome to freedom, your rulebook is in the mail" - Fake Steve Jobs
rfc-1925 - The Twelve Networking Truths

Trädvy Permalänk
Medlem
Registrerad
Nov 2005

Tackar!

Kan man använda "find" till att ta bort alla tomma mappar i en viss mapp? alltså typ

find /home/jag/minmapp/ -type d -is_empty -exec rm {} \;

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Okt 2006

Ja du kan göra så, dock måste du ju köra rm -r istället för att ta bort en mapp.

"Stallman to Dvorak: Welcome to freedom, your rulebook is in the mail" - Fake Steve Jobs
rfc-1925 - The Twelve Networking Truths

Trädvy Permalänk
Medlem
Registrerad
Nov 2005

ok, men är "-is_empty" en giltig parameter? Jag bara chansade...

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Okt 2006

BSD find har -empty, GNU find kan ha andra flaggor, läs manualen för din version.

"Stallman to Dvorak: Welcome to freedom, your rulebook is in the mail" - Fake Steve Jobs
rfc-1925 - The Twelve Networking Truths

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Maj 2004

Du kan köra

rmdir *

Den tar bara bort tomma mappar.

Trädvy Permalänk
Medlem
Plats
Växjö
Registrerad
Feb 2002

Du kan också använda tmpwatch

http://linux.die.net/man/8/tmpwatch