Synology-NAS: Verzeichnisse dauerhaft von nervigen temp-Dateien befreien

IM EINSATZ?

Dann schau dir UNSEREN LOXKURS an und profitiere von unserem Wissen!

Ein Synology-NAS ist praktisch. Es bietet Platz für Unmengen an Daten, seien es Videos, Fotos oder andere Dokumente. Beim fleißigen Hin- und Herkopieren von Datein zwischen PC, Mac, Linux-Server und Synology NAS füllen sich die Ordner aber nicht nur mit nützlichen Inhalten. Wie von Geisterhand wuchern in den Ordnern nach gewisser Zeit auch unnötige Temporärdateien, die zwar nicht sonderlich viel Platz brauchen, der Übersichtlichkeit jedoch maßgeblich schaden. Hunderte Ordner sind dann schnell überflutet mit Datenmüll, den es zu tilgen gilt. Es muss also eine halbwegs einfache, automatisierte Lösung her, möchte man nicht jede einzelne temp-Datei händisch tilgen.

temp-Dateien auf einen Schlag tilgen (getestet mit DSM 4.2)

Eine relativ unbequeme aber dennoch einfache Möglichkeit alle unnötigen Dateien zu löschen, bietet ein “einfacher” Terminal-Befehl. Dazu wird eine ssh-Verbindung zum Synology-NAS aufgebaut:

1. ssh-Login per Terminal

Damit der ssh-Login auf das Synology-NAS gelingt, muss vorher über das DSM-Interface unter dem Menüpunkt “Systemsteuerung” -> “Terminal” der Haken bei “SSH-Dienst aktivieren” gesetzt werden. Daraufhin erfolgt die ssh-Anmeldung z.B. über die integrierte Terminal-App (MAC OS X) oder Putty (Windows):

ssh root@IP-ADRESSE-DES-SYNOLOGY-NAS

Die IP-Adresse des Synology-NAS kann im DSM-Interface unter Systemsteuerung – Netzwerk – Netzwerk Schnittstelle herausgefunden werden.

Wichtig ist der Login per “root”, das Passwort ist identisch mit dem des “admin”-Users.

2. Lösch-Befehl ausführen

Im zweiten Schritt wird der unten stehende Befehl per Copy&Paste in das Terminal-Fenster kopiert und mit der Enter-Taste bestätigt.

Hinweis: Wer an dieser Stelle einen Fehler macht, riskiert im schlimmsten Fall, daß alle auf dem NAS gespeicherten Daten gelöscht werden. Deshalb besondere Vorsicht walten lassen! Wer sich nicht sicher ist, was er da tut, sollte besser die Finger davon lassen.

find /volume1/ -depth \( -name '.@__thumb' -o -name '.DS_Store' -o -name '.AppleDouble' -o -name ':2e*' -o -name '~$!#~*' -o -name '.TemporaryItems' -o -name '.apdisk' \) -print0 | xargs -0r rm -rf

Der Befehl durchsucht dabei alle Ordner und Unterordner im Standardvolume (volume1) nach den folgenden Temporärdateien und löscht diese. Dieser Vorgang kann dabei eine gewisse Zeit in Anspruch nehmen.

.@__thumb
.DS_Store
.AppleDouble
:2e*
~$!#~*
.TemporaryItems
.apdisk
@eaDir (wurde entfernt, da die Photo Station-App darauf angewiesen ist)

Erweiterung des Lösch-Befehls

Diese Auswahl erhebt keinen Anspruch auf Vollständigkeit und kann nach Belieben ergänzt werden. Wer dies tut, muss sich aber im Klaren sein, was er/sie da anstellt. Im schlimmsten Fall kann mit einem falschen Befehl der gesamte Festplatteninhalt gelöscht werden. Jeder ist selbst dafür verantwortlich, ich übernheme keine Haftung für die falsche Anwendung.

Timergesteuertes Ausführen des Lösch-Befehls

Das Ganze lässt sich jetzt noch weiter automatisieren, so dass bspw. einmal wöchentlich alle unnötigen temp-Dateien gelöscht werden. Dazu habe ich den oben stehenden Lösch-Befehl in das Script deletetempfiles.sh gepackt. Mit nachfolgendem Befehl landet die Datei gleich im public-Folder (/volume1/public):

cd /volume1/public/; wget https://meintechblog.de/download/deletetempfiles.zip; unzip deletetempfiles.zip; rm deletetempfiles.zip

Alternativ die Datei einfach herunterladen, das zip-File entpacken und den Inhalt in den gewünschten Ordner kopieren.

Im Anschluss kann im Synology-DSM unter “Systemsteuerung” -> “Aufgabenplaner” -> “Erstellen” -> “Benutzer-definiertes Skript” eine neue Aufgabe hinterlegt werden. Als Folder wird /volume1/public/deletetempfiles.sh eingetragen (siehe Screenshot links). Unter Zeitplan lässt sich dann konfigurieren, wann das Script ausgeführt werden soll. Je nach Anzahl der vom Script zu durchsuchenden Ordner kann die Abarbeitung schnell mehrere Minuten bis Stunden dauern. Man sollte deshalb den Zeitraum nicht zu klein wählen.

@eaDir-Service dauerhaft deaktivieren

Das Synology-NAS erzeugt bei Zugriff per AFP automatisch Temp-Dateien des Typs “@eaDir”. Um dies von Vorneherein zu verhindern, führt man nachfolgende Befehle aus:

Als Erstes muss der Dienst, der dafür zuständig ist die Thumbs zu erzeugen, gestoppt werden:

/usr/syno/bin/synomkthumb -stop

Daraufhin wird das Startscript gesichert, damit der Dienst später (sofern benötigt) wieder hergestellt werden kann:

tar -cvzf /volume1/public/backup_S77synomkthumbd.tar.gz /usr/syno/etc.defaults/rc.d/S77synomkthumbd.sh

Zum Schluss wird verhindert, dass der Dienst beim nächsten Neustart wieder gestartet wird:

rm /usr/syno/etc.defaults/rc.d/S77synomkthumbd.sh

.DS-Store dauerhaft deaktivieren (MAC)

Auch OSX sorgt standardmäßig dafür, dass bei Netzwerkzugriffen auf das Synology-NAS laufend .DS-Store Dateien erzeugt werden. Dies lässt sich direkt mit dem folgenden Terminal-Befehl unterbinden (Der Befehl muss direkt in OSX ausgeführt werden. Wer noch auf dem Synology-NAS verbunden ist, kann sich mit dem Befehl “exit” trennen.):

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

Danach noch den Mac neustarten und auch dieses Problem ist ab sofort aus der Welt geschafft.

Aus meinem täglichen Leben

Die hier vorgestellte Lösung verrichtet bei mir bereits seit einiger Zeit treu seine Dienste und sorgt dafür, dass unnötiger Dateischrott automatisch gelöscht wird und meine Nerven bei der Suche nach gewünschten Inhalten damit geschont bleiben. Ich lasse das oben beschriebene Script nur einmal wöchentlich laufen, was absolut ausreichend ist. Der Durchlauf dauert auf meinem DS1812 mit einer Unmenge an Ordnern und Dateien (1.000.000+) ca. eine Stunde. Wer noch weitere nervige temp-Dateien ausfindig machen kann, schreibt bitte einen Kommentar. Ich werde das Script dann entsprechend erweitern.

Affiliate-Links

[easyazon_image align=”none” height=”110″ identifier=”B005NFVCTK” locale=”DE” src=”https://meintechblog.de/wordpress/wp-content/uploads/2015/06/31GRKfEAkL.SL1103.jpg” tag=”meintechblog-130430-21″ width=”110″][easyazon_image align=”none” height=”110″ identifier=”B002US9AYC” locale=”DE” src=”https://meintechblog.de/wordpress/wp-content/uploads/2015/06/41APkhab5eL.SL1104.jpg” tag=”meintechblog-130430-21″ width=”110″][easyazon_image align=”none” height=”110″ identifier=”B004RORMF6″ locale=”DE” src=”https://meintechblog.de/wordpress/wp-content/uploads/2015/06/41Xsaw8Wd4L.SL1102.jpg” tag=”meintechblog-130430-21″ width=”110″]

 

26 Kommentare
  1. Hallo Jörg, super Anleitung, danke!

    Jedoch kommt bei mir die Fehlermeldung, dass der Pfad nicht gefunden werden kann, wenn ich diesen Teil ausführe: rm /usr/syno/etc.defaults/rc.d/S77synomkthumbd.sh

    Kann es sein, dass sich dieses File bei mir in einem anderen Pfad befindet?
    Dasselbe Problem habe ich, wenn ich dieses File mit “tar -cvzf…” sicher möchte.
    Danke und Grüsse

    1. Ist möglich. Um die Datei ausfindig zu machen, würde ich mich im Terminal schrittweise von Order zu Ordner hangeln. Dazu kann man die Tab-Taste nutzen (einfach und doppelt geklickt). Also z.B. /usr/syno/e eingeben und dann mit der Tab-Taste die Autovervollständigung probieren. Wenn es mehr als eine Möglichkeit gibt und keine Vervollständigung angezeigt werden, dann einfach die Tab-Taste doppelt klicken, dann werden alle möglichen Alternativen angezeigt. So sollte man recht flott zum richtigen Pfad bzw. zur richtigen Datei kommen. Bitte mal testen und Bescheid geben, ob es geklappt hat.

  2. Wäre es möglich das Lösch Script SO umzubauen daß es doch das “@eadir” Unterverzeichnis löscht, dies aber NICHT im “\photo” Ordner macht?
    Ich habe leider NULL Ahnung von den Shell Befehlen bei Linux, ich mach da fast alles mit dem Midnight Commander.

  3. Hallo Jörg,

    danke für den Tipp. Seltsamerweise löscht das Skript bei mir nur Dateien, aber keine Ordner wie .TemporaryItems. Muss ich da eine zusätzliche Option aufnehmen? Hier mein Skript erweitert um ein paar weitere Suchstings:

    find /volume1/ -depth \( -name ‘.@__thumb’ -o -name ‘.DS_Store’ -o -name ‘.AppleDouble’ -o -name ‘:2e*’ -o -name ‘~$!#~*’ -o -name ‘.TemporaryItems’ -o -name ‘.apdisk’ -o -name ‘#recycle’ -o -name ‘.localized’ -o -name ‘.android_secure’ -o -name ‘.fseventsd’ -o -name ‘.Spotlight-V100’ -o -name ‘.Trashes’ -o -name ‘_Archived Items’ -o -name ‘LOST.DIR’ \) -exec rm -rf {} \;

    Gruß, Kai

    1. Hi Kai,
      mit der Option -type d lassen sich auch Ordner löschen. Leider bin ich kein Experte, was das angeht. Am besten erstmal in einer Testumgebung ausprobieren und erst dann auf das produktive System anwenden. Bei solchen delete-Befehlen sollte man wirklich wirklich aufpassen!

  4. Hallo,
    habe eben den terminal befehl ausgeführt(/usr/syno/bin/synomkthumb -stop) hat funktioniert. Dann wollte ich den für den Startskript ausführen tar -cvzf /volume1/public/backup_S77synomkthumbd.tar.gz /usr/syno/etc.defaults/rc.d/S77synomkthumbd.sh) da kam schon irgendeine fehlermeldung. hab dann den nächsten probiert zum abschluss, auch da gab es eine fehler. Im terminal am mac hab ich exit eingegeben und dann für macOS angegeben den dienst nicht jedesmal neu zu starten. So weit so gut.
    3 Stunden später piept meine ds414 plötzlich und ich komm über die normale ip nicht mehr drauf. im lan ist er unter einer .46 erreichbar und fordert mich dort auf die DSM Software neu zu installieren. Sind all meine daten nun weg, oder hat es nur die Software zerschossen? was kann ich tun?

    lg
    rainer

    1. Hallo Rainer,
      welche Fehlermeldung war es denn genau? Das wäre an dieser Stelle wichtig, um eine genauere Diagnose abgeben zu können, was schief gelaufen ist. Vielleicht haben sich die Systemdienste seit der im Artikel angesprochenen DSM-Version 4.2 (aktuell ist 5.x) etwas geändert. Kann das leider gerade nicht testen, da ich derzeitig nur ein QNAP im Einsatz habe.
      So oder so sollten die Befehle nicht bewirken, daß das System instabil wird oder gespeicherte Daten gelöscht werden. Ich habe die Befehle selbst nochmal auf meinem gerade brachliegenden Synology-System getestet, da hat alles einwandfrei funktioniert.
      Sofer du das Problem nicht bereits selbst in den Griff bekommen konntest, würde ich empfehlen direkt den Synology-Service zu kontaktieren und deren Support in Anspruch zu nehmen, damit du deine Daten retten kannst. Die Jungs sind in der Regel sehr nett und helfen schnell weiter (schon selbst erlebt).

      Grüße und viel Erfolg

      Jörg

  5. Also ganz so perfekt ist das jetzt nicht mit dem Suchen einer Datei. Von Ordner zu Ordner hangeln ist wohl für Jemanden, der ein NAS schon länger betreibt, ein Marathon und Arbeit soll ja ein NAS nicht machen.

    Suchen lassen heisst es. Man kann unter Linux wie unter jedem anderem OS Dateien und Ordner finden lassen. Beim NAS nicht nur in der Ordnerstruktur der Festplatten.

    Als root angemeldet, in der Konsole bedarf (und darf es auch nicht geschrieben werden) es kein sudo, auf “normalen” Rechnern schon, daher gebe ich den Befehl mal unverbindlich für alle in der einfachsten Form mit, welche jede kleine Distripution versteht, weil sie uralt ist.

    # sudo find / -name zusuchenderAusdruck wobei “/” sag, man soll die Suche im Stammordner beginnen und sich dann durch die sesamten Ordner wühlen. Man kann auch einen Pfad vorgeben. Beim Weglassen allerdings ist man im Homeordner von root also /root und Der ist … leer.

    Dabei ist es egal, ob man einen Ordner oder eine Datei sucht. In der Ausgabe wird nur der Pfad zum Ausdruck mit dem Ausdruck angegeben. Allerdings nicht, ob im Pfad noch ein Symlink steckt, oder das Ziel ein Ordner ist.
    Da man aber durch Markieren mit der linken Maustaste auch gleichzeitig alles Markierte kopiert, kann man schnell mittels einfachem
    # ls -lah oder bei den NAS mittels
    # ls -c /Pfad/gesuchterAusdruck
    und dem Klick der mittleren Maustaste schnell herausfinden, ob es sich um einen Ordner handelt. Wird ein Pfad zu einem Ordner aufgerufen, sieht man dessen Inhalt. Ist entgegen die kopierte und zur Listung abgefragte Struktur am Ende eine Datei, wird nur der Pfad mit der Datei wie hinter ls -c ausgegeben. Diese kann man dann direkt mit cat /Pfad/zur/Datei/Dateiname sich anzeigen lassen. Über die Länge des Inhaltes der Datei müssen wir uns keine Sorgen machen, der Monitor ist ja nach oben “offen”
    Jetzt noch heraus zu finden, wie man cat dazu bewegt, seitenweise anzuzeigen, oder sonst etwas zu tun findet man unter
    man cat.

    Ob type -d nun Ordner löscht, keine Ahnung. Gelöscht wird gern mit
    # rm /Pfad/zum/zu/löschenden/Objekt
    rm ist es allerdings auch egal, was “er” da löschen soll. Nur wenn es ein Ordner sein soll, will rm noch ein -R für die Ordnerinhalte und ggf. Unterordner
    # rm -R /Pfad/zum/zu/löschenden/Objekt

    Die Rechte sollte man allerdings schon haben… . Aber auf dem NAS meldet man sich ja nur noch als root an – wobei jeder andere administrative User auch geht, jedoch… nicht mit gleichen Rechten wie User root.

    Die notwendige Vorsicht beim Löschen muss ich nicht erwähnen. Von Haus aus kann ein SynoNAS gelöschte Dateien wieder herstellen, aber in undelete gibt es dafür direkt nicht. Bei der Aktivierung von Samba (cifs) kann man einen Papierkorb aktivieren. Da werden die Dateien halt nur da rein verschoben, wenn man sie löscht. Das gilt dann jedoch nur für Dateien/Ordner der Volumen (HDDs) Ansonsten gilt bei NAS wie bei einer SSD ohne Papierkorb – wenn weg, dann weg, bzw. der Aufwand ist höher, als ein Text hier lang sein sollte.

    Habe fertig.

    theMario

  6. Bekomme leider bei dem Löschbefehl die Fehlermeldung
    -sh: syntax error: unexpected “(”

    Kann es sein das was geändert wurde am find Befehl? Habe den Befehl genauso wie angegeben in die bash kopiert.

    Danke und Gruß
    Hans

    1. Vor die Klammerrn muss je ein Backslash. Der steht da höchstwahrscheinlich auch, wird aber vom Blog-Backend fehlinterpretiert und gehört im Blog-Quellcode verdoppelt.

    2. Hi,
      ich weiss leider nicht, ob bzw. warum sich in der Zwischenzeit ein Fehler eingeschlichen hat. Habe je einen Backslash vor die Klammern gepackt. Falls noch etwas angepasst werden muss, lasst es mich bitte wissen.

      Danke und Grüße
      Jörg

  7. Denke da hat es noch so das ein oder andere durcheinander gewürfelt wie mir scheint (leider).

    find: -exec CMD must end by ‘;

    Evtl. kann man das ganze ja als TXT Datei hinterlegen, nicht das sich da noch der ein oder andere Fehler sonst einschleicht. (wäre nett)

    Danke und Gruß
    Hans

    1. Ich bin nicht mehr so wirklich in der Materie drin.. Sofern noch Fehler im Code sind, bitte kurz per Kommentar mitteilen, dann ändere ich das im Blogpost ab.

      Grüße
      Jörg

    2. Hi,

      hatte selbigen Fehler. Liegt daran, dass das ; mit einem Backslash escaped werden muss. Hier der Befehl, der bei mir dann tat:

      find /volume1/ -depth \( -name ‘.@__thumb’ -o -name ‘.DS_Store’ -o -name ‘.AppleDouble’ -o -name ‘:2e*’ -o -name ‘~$!#~*’ -o -name ‘.TemporaryItems’ -o -name ‘.apdisk’ \) -exec rm -rf {} \;

      Sandos

    3. Hi,
      hatte selbigen Fehler. Liegt daran das das ; mit einem Backslash escaped werden muss. Hier der Befehl, der bei mir dann tat:
      find /volume1/ -depth \( -name ‘.@__thumb’ -o -name ‘.DS_Store’ -o -name ‘.AppleDouble’ -o -name ‘:2e*’ -o -name ‘~$!#~*’ -o -name ‘.TemporaryItems’
      -o -name ‘.apdisk’ \) -exec rm -rf {} \;
      Sandos

      UPDATE: sehe gerade, in dem deletetempfiles.sh script ist der backslash sogar drin. Fehlt lediglich oben in dem code-fenster.

    1. Danke für den Hinweis. Kannst du bitte nochmal den gesamten Code einfügen, damit ich das im Blogpost abändern kann? Verstehe deine Erläuterung mit … leider nicht so ganz.

      Grüße und danke schon mal
      Jörg

    2. Das Auslassungszeichen “…” stand einfach für den zu startenden Befehl. Dachte, das wäre offensichtlich.

      In diesem Fall:

      find /volume1/ -depth \( -name ‘.@__thumb’ -o -name ‘.DS_Store’ -o -name ‘.AppleDouble’ -o -name ‘:2e*’ -o -name ‘~$!#~*’ -o -name ‘.TemporaryItems’ -o -name ‘.apdisk’ \) -print0 | xargs -0r rm -rf

      Siehe dazu auch die entsprechenden Manpages.

  8. Hallo,

    danke für die Tipps!

    Der Lösch-Befehl scheint unter DSM 6.0 weiterhin zu funktionieren, allerdings muss man sich nun nach der Anmeldung als admin (über SSH) mit dem Kommando “sudo -i” (ohne “”) die nötigen root-Rechte sichern.

    Gruß

    PS: Weiß jemand wie man die Photo Station dazu bringt Bilder am iPad (via DS Photo) im Original zu laden, also ohne Qualitätsverlust?

  9. Hallo,

    bin gerade beim Suchen auch auf deine Seite gestossen.
    Funktioniert das ganze auch noch bei der Aktuellen DSM 6.1…. ???

    Und falls ja, könntest du mir Sagen wie ich die Suche auf die komplette Festplatte ausweite? würd halt gerne auch direkt die Sytem Log Files usw die zu alt sind suchen und löschen lassen.

    Vielen Dank

    Gruss

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte dir auch gefallen