Wenn man seine Festplatten über längere Zeit hinweg überwacht oder später nochmal auf SMART-Werte zugreifen möchte (z. B. bei einem Festplattentausch oder Verkauf), lohnt es sich, diese regelmäßig zu sichern. Vor allem bei einem NAS System wie der Synology DiskStation unter DSM ist das sinnvoll – sei es zur langfristigen Analyse von Laufwerkszuständen oder zur Dokumentation vor der Weitergabe.
Das folgende Bash Skript automatisiert genau das: Es liest die SMART-Werte aller angeschlossenen HDDs und NVMe-SSDs aus und speichert sie mit Zeitstempel in einem definierten Verzeichnis. So entsteht eine chronologische Sammlung der Laufwerksdaten, die jederzeit eingesehen werden kann – selbst wenn das Laufwerk nicht mehr eingebaut ist.
Vorteile:
- Verlaufsübersicht: Entwicklung von Temperatur oder Fehler nachvollziehen
- Nachweis bei Verkauf: Zustand der Festplatte dokumentieren
- Backup der SMART-Werte: Auch nach Tausch oder Ausfall der Platte noch verfügbar
Das Skript im Einsatz
Das Bash-Skript erkennt automatisch, ob SATA- oder NVMe-Geräte vorhanden sind und verwendet smartctl
(für HDDs/SSDs) sowie nvme
(für NVMe-SSDs), um die Daten auszulesen. Die Ergebnisse werden mit Zeitstempel im gewünschten Zielverzeichnis gespeichert.
Einrichten als Aufgabe
Gebe einen Namen für die Aufgabe an, und wähle als Benutzer root aus.

Wähle aus wie oft und zu welcher Zeit die Aufgabe ausgeführt werden soll.

Füge das Script entsprechend ein, und passe den Pfad an, wo die Textdateien gespeichert werden sollen.
Im Beispiel ist es der User „User“ und der Unterordner „Smartwerte“.

Script
#!/bin/bash
OUTPUT_DIR="/volume1/homes/User/Smartwerte"
DATE=$(date +"%Y-%m-%d_%H-%M")
if ls /dev/sata[0-9] &>/dev/null; then
HDD_DEVICES=(/dev/sata[0-9])
else
HDD_DEVICES=(/dev/sd[a-z])
fi
for DEV in "${HDD_DEVICES[@]}"; do
[ -b "$DEV" ] || continue
DEVNAME=$(basename "$DEV")
OUTPUT_FILE="${OUTPUT_DIR}/Smartwerte_${DEVNAME}_${DATE}.txt"
smartctl -a "$DEV" > "$OUTPUT_FILE"
done
for DEV in /dev/nvme[0-9]; do
[[ "$DEV" =~ ^/dev/nvme[0-9]$ ]] || continue
[ -e "$DEV" ] || continue
DEVNAME=$(basename "$DEV")
OUTPUT_FILE="${OUTPUT_DIR}/Smartwerte_${DEVNAME}_${DATE}.txt"
NVME_INFO_LINE=$(nvme list | grep "^$DEV" | head -n 1)
{
echo "--- Geräteinformationen ---"
echo "$NVME_INFO_LINE"
echo ""
echo "--- SMART Log ---"
nvme smart-log "$DEV"
} > "$OUTPUT_FILE"
done