การลบไฟล์เก่าสุดบนลีนุกซ์

มีเครื่องที่เป็นระบบ IPPBX ด้วยโปรแกรม Elastix ระบบทำการบันทึกเสียงมายาวนานทำให้ Harddisk เริ่มจะเต็มแล้ว เลยหาวิธีทำให้มันลบไฟล์เก่าๆตามที่เรากำหนด ซึ่งสามารถทำได้ด้วยคำสั่งดังนี้ครับ


# find . -mtime +365 | xargs rm -rf

find . หมายถึงค้นหาไฟล์ทั้งหมดใน directory ปัจจุบันนั้นๆ เท่านั้น
-mtine +365 หมายถึง เอาไฟล์ที่มีเวลาก่อน 365 วันมาแล้วเท่านั้น
| xargs -rm -rf หมายถึง ได้ไฟล์อะไรบ้างแล้วจากบรรทัดบนให้ส่งเป็น argument ไปให้คำสั่ง -rm เพื่อลบข้อมูล ส่วน -rf ข้างหลังคือ ลบไปเลยไม่ต้องถาม ถ้าภาษานักเลงหน่อยก็คง ต่อยก่อนถามทีหลังประมาณนั้น

หรือถ้าหากต้องการให้มันทำงานอัตโนมัต ไม่ต้องคอยมาสั่งมันเรื่อยๆ หรือถ้าเผลอนานไปก็อาจเกิดปัญหาได้ ก็สามารถเอาไปใส่ไว้ใน crontab ได้ แต่แก้คำสั่งตามด้านล่างครับ


10 04 * * *  root /usr/bin/find /var/spool/asterisk/monitor/. -mtime +356 | xargs rm -rf

จากกำสั่งก็คือทำทุกอย่างเหมือนคำสั่งด้านบน แต่ย้ายมาทำงานในcrontab แทน โดยตั้งเวลาให้ทำงานตอน 4:10 ช่วงเงียบๆ คงไม่กระทบอะไรครับ..