2011
08.08

Wer einene Mac und ein NAS (von QNAP) hat kennt das, das wenn man mit einem Windows Rechner auf das NAS zugreift und man in Windows die Einstellung “alle Versteckte Dateien anzeigen” aktiviert hat, sieht plötzlich alle Dateien noch mal mit einem ._ davor und in jedem Ordner ist zuätzlich eine .DS_Sore Datei vorhanden.

In diesen Dateien sind Metadaten zu den richtigen Dateien vorhanden, diese Daten beinhalten zum Beispiel das Finder:

  • Fensterdarstellungen
  • Fenstergrößen
  • Icon-Positionen
  • Farbige markierung von Ordnern
  • und viele weitere Funktionen

Wer dies NICHT benötigt kann die Funktion unter OSX abschalten so das die Dateien nicht mehr erstellt werden.

ACHTUNG: Wer dies hier ausführt sollte schon wissen was er macht, falls Ihr nicht wisst was ihr macht oder nicht das Script am Ende des Tutorials versteht möchte ich von einer Ausführung abraten da hier Grundlegende Sytemeinstellungen verändert werden und das Script direkt auf dem NAS ausgeführt wird. Ich übernehme hiermit somit keine Verantwortung für Verlust eurer Daten oder Schäden an Eurem System.

Um OSX / Finder zu sagen das er diese Dateien nicht mehr auf Netzlaufwerken schreiben soll öffnet das Terminal und gebt folgendes ein:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

Nun könnt ihr die ._ und .DS_Store Dateien vom NAS löschen.

Falls es Probleme geben sollte beim löschen der Dateien auf dem NAS “Zugrifff verweigert” habe ich aus diesem Forumbeitrag ein Script abgewandelt welches mir die betreffenden Dateien vom NAS heraussucht und diese direkt auf dem NAS löscht.

Leider muss man hier über den Umweg mit dem Script gehen da der find Befehl im QNAP NAS stark eingeschränkt worden ist und eine integrierte Löschfunktion der gefundenen Dateien nicht mehr vorhanden ist.

1. SSH in der QNAP Administration aktivieren:

In der QNAP Administrationsoberfläche SSH aktivieren, den Menüpunkt findet ihr unter Startseite >> Netzwerkdienste >> Telnet / SSH und folgende Punkte wie im Bild aktivieren und auf “übernehmen” klicken

2. Zum NAS Verbinden

Terminal öffnen und mit dem admin Benutzer von eurem QNAP NAS Verbinden

ssh admin@IP_EURES_NAS

Bei einer Abfrage ob der Schlüssel (Key) akzeptiert werden soll mit ja / yes antworten, und bei einer Passwortabfrage das Administratorkennwort des QNAP NAS eingeben.

3. Mit dem Editor vi das Script erstellen

vi /tmp/delmetafiles.sh

Im vi nun einmal i drücken, nun seid ihr im Insert-Modus.

Das Script hier aus dem Browser heraus kopieren und mittels Strg + v oder ctrl + v in den Editor kopieren

find / -name "._*"  > /tmp/delfiles.txt
find / -name ".DS_Store*"  >> /tmp/delfiles.txt
FILES=`cat /tmp/delfiles.txt`
for f in $FILES
do
rm "$f"
done

Die Taste ESC drücken und nun :wq eingeben und ENTER drücken. Mit ESC verlasst ihr den Insert-Modus und mit :wq sagt ihr vi das ihr die Datei schreiben und den Editor beenden möchtet.

4. Das Script ausführen:

sh /tmp/delmetafiles.sh

Nun erstellt das Script die Datei /tmp/delfiles.txt und löscht alle darin aufgelisteten Dateien, falls ihr selber sehen wollt welche Dateien gelöscht worden sind könnt ihr mit vi die Datei ansehen.

Nun sollte das NAS von den Dateien befreit sein.

 

5 comments so far

Kommentieren
  1. Sehr geil, Skript funzt!

    Danke
    Sascha

  2. Hi danke für den Tipp, dein Script werd ich demnächst mal testen, und wenn alles gut läuft werde ich es direkt auf der Seite mit einem Dank an dich Posten.

  3. Moin,
    stand vor dem gleichen Problem (incl. der Leerzeichen). Es liegt daran, dass Listen in Shellskripts durch ein Whitespace (kann Zeilenende oder Leerzeichen sein) getrennt sind.
    Hier mal ne angepasste Loesung, bei der ich mir den Umweg ueber $FILE spare und die Datei zeilenweise ausles:

    #!/bin/sh

    find / -name “._*” > /tmp/delfiles.txt
    find / -name “.DS_Store” >> /tmp/delfiles.txt
    find / -name “:2eDS_Store” >> /tmp/delfiles.txt

    cat /tmp/delfiles.txt | while read f
    do
    rm “$f”
    done

    Gruss
    pepe

  4. OK habs geteste und du hast Recht, hmm muss ich mal gucken wie man das am Besten Lösen kann.

  5. Hi, das Skript ist super soweit, nur berücksichtigt es keine Leerzeichen im Dateinamen.
    Wie kann ich das noch einbauen?

    Danke.

    Gruß
    Sascha

Dein Kommentar