10GB'ın üzerindeki klasördeki tüm dosyaları otomatik olarak sil?


2

DigitalOcean'dan (5 $ / Ay) küçük bir sunucum var ve bu sunucudaki 20GB'mden yalnızca 16GB'ım var. Bazı küçük dosyaları (3-6Mb) otomatik olarak indirecek bir siteyi barındıracağım ve sonunda indirme klasörü büyük hale gelecek. Her gün otomatik olarak çalışacak ve belirli bir klasörü kontrol edecek bir tür cron işi ya da komut dosyası var mı ve bu klasör X miktarını aşıyorsa, klasörü temizlemeye çalışır mı? (bazı dosyalar kullanımda olabilir)

Önemli olursa Ubuntu 15 kullanıyorum. Herhangi bir ipucu için teşekkür ederiz.

Yanıtlar:


2

Bunu aşağıda yapacak bir senaryo yazdım - lütfen çalıştırmadığınızdan, özellikle rm -r komutundan memnun olup olmadığınızı iki kez kontrol edin. (Bu komut, alt klasörler dahil, verilen klasördeki her şeyi silmelidir.

#! /bin/bash

FOLDER=/folder/to/delete

MAXSIZEINGIGS=10

#### No User Serviceable Parts below this line ###

MAXSIZE=$(( $MAXSIZEINGIGS * 1024 * 1024 ))
FOLDERSIZE=`du -ks $FOLDER | cut -f1`

if [ $FOLDERSIZE -gt $MAXSIZE ]
then
        rm -r $FOLDER/*
fi

Yukarıdaki komut dosyası ile bir dosya oluşturun, sonra çalıştırılabilir hale getirin (chmod 755 dosyaadı) ve crontab'a benzer bir satırla ekleyin

02 02 * * *    ownername   /path/to/file

(Bu her sabah 02: 02'de çalışır ve / etc / crontab dosyasına eklediğinizi varsayar. Bir crontab kullanıcısına eklediyseniz, "ownername" bitini bırakın.

Bu, bunun bir şeyler yapmanın iyi bir yolu olup olmadığını merak ediyorum dedi. Tamamen farklı bir yaklaşım, belli bir yaşa göre daha eski olan tüm dosyaları düzenli aralıklarla kaldırmak olabilir - crontab gibi 1 liner ile bunu yapabilirsiniz

02 04 * * *     username     find /data/spam -ctime +15 -exec rm {} +

Daha sonra tüm dosyaları 14 gün sonra / data / spam olarak arayacak ve silecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.