Hirdetés

Proxmox memoárok: hasznos scriptek

Smart adatok: lassú romlási trendek figyeléseIsmét egy csokor bármi: scriptek mindenféle feladatra. Mentés...

NAS gyors takarítása

Ez egy rövid kis script, ami a felesleges fájlokat eltakarítja a TARGET csatolási ponton. Ehhez kell néhány feltételnek teljesülnie, pl. a cél meghajtó (vagy mappa) elérhető kell legyen a PVE számára. Ezzel a VM-nek átadott lemezek kiesnek, ez csak a közvetlenül PVE-hez csatoltaknál járható út. Nálam Windows virtuális gép is fut, a felhasználói mappák egy külön SSD-n vannak, amiket az Alpine NAS LXC oszt meg a Windows 11 VM-nek. Ennek megfelelően oda generálódik némi törölhető fájl, amit az office vagy más program hagy hátra a temp mappában és mindenféle helyeken. A 30 napnál régebbi lomtár elemeket is törli, de a scriptben minden módosítható. Elvileg mentéskor is kihagyja ezeket a temp fájlokat, de szeretem, ha előtte ki van takarítva, mert pl. lomtárat egy az egyben menti és arra feltehetőleg nincs szükség.

Kép: Lovart.AI

Hozzuk létre a nas_cleaner.sh-t, nálam a scriptek a /root/script mappában vannak, de kinek mi...
nano /root/script/nas_cleaner.sh

Hirdetés

Az üres fájlba másoljuk be:

#!/bin/bash
set +H
# --- KONFIGURÁCIÓ ---
TARGET="/mnt/ssd"
LOG_FILE="/root/log/nas_cleaner.log"
start_time=$(date "+%Y-%m-%d %H:%M:%S")
# --- 1. CSATOLÁS ELLENŐRZÉSE ---
# Csak akkor futunk neki, ha a lemez tényleg ott van
if ! mountpoint -q "$TARGET"; then
error_msg="HIBA: A meghajtó nincs csatolva a $TARGET pontra, a takarítás elmaradt!"
echo -e "Subject: Meghajtó takarítás HIBA\n\n$error_msg" | /usr/libexec/proxmox-mail-forward
exit 1
fi
{
echo "--- Takarítás indítva: $start_time ---"
# --- 2. ÁTMENETI FÁJLOK (1 napnál régebbiek) ---
# .tmp, ~$ kezdetűek és Thumbs.db törlése
find "$TARGET" -type f \( -name "*.tmp" -o -name "~$*" -o -name "Thumbs.db" -o -name ".thumb*" \) -mtime +1 -print -delete
# --- 3. TEMP és CACHE mappák ürítése (1 napnál régebbiek) ---
# Megkeresi a temp/cache mappákat és csak a bennük lévő fájlokat törli
find "$TARGET" -type d \( -iname "temp" -o -iname "cache" \) -exec find {} -type f -mtime +1 -print -delete \;
# --- 4. LOMTÁR ($RECYCLE.BIN) (30 napnál régebbi fájlok törlése) ---
if [ -d "$TARGET/\$RECYCLE.BIN" ]; then
find "$TARGET/\$RECYCLE.BIN" -type f -mtime +30 -print -delete
fi
end_time=$(date "+%Y-%m-%d %H:%M:%S")
echo "--- Takarítás kész: $end_time ---"
} >> "$LOG_FILE" 2>&1
# --- 5. LEVÉLKÜLDÉS ---
# Csak egy rövid összefoglalót küldünk a log végéből
stats=$(tail -n 6 "$LOG_FILE")
mail_body="A(z) $TARGET takarítása kész.
Kezdés: $start_time
Befejezés: $(date "+%Y-%m-%d %H:%M:%S")
Részlet a logból:
$stats"
echo -e "Subject: NAS Takarítás kész\n\n$mail_body" | /usr/libexec/proxmox-mail-forward

Ehhez is kell a mail forward, amin keresztül a PVE tud nekünk emali-t küldeni. A futtatását crontab-ra bízzuk és ennyi:
crontab -e

A végére másoljuk be ezt:
# NAS takarítása (hétfő és péntek)
30 3 * * 1,5 /root/script/nas_cleaner.sh > /dev/null 2>&1

A scriptünk hétfőn és pénteken 3.30-kor lefut (pár sec az egész), az ütemezett mentések csak ezután indulnak (szintén crontab+script kombóval). Manuálisan is futtathatjuk/tesztelhetjük. Ha szintaktikai hibát ír, akkor az a windows vs unix sortörések miatt van 99%-ban. Futtassuk ezt:
sed -i 's/\xc2\xa0/ /g' nas_cleaner.sh

Ne felejtsünk el logrotate-t létrehozni:
nano /etc/logrotate.d/nas_cleaner

Másoljuk bele ezt:
/root/log/nas_cleaner.log {
weekly
rotate 12
compress
missingok
notifempty
}

Mentés, bezárás. Ez 12 heti logot őriz meg, több, mint elég.

A cikk még nem ért véget, kérlek, lapozz!