Versteckte Dateien finden

Wenn Du was dazulernen willst, gehe in ein Krankenhaus – mit dem Laptop natürlich – und benutze eine praktische Cloud-Anwendung zum Replizieren der Daten auf den Laptop.

Ich habe mir vorsorglich OwnCloud auf meinen Laptop installiert und die Daten synchronisiert, in der Absicht, die langen Stunden im Krankenhaus zu nutzen. Und es schien auch alles geklappt zu haben.

Eines dieser Vorhaben waren Arbeiten an einem Visual Studio-Projekt. Siehe da, das äußerlich vollständig scheinende Projektverzeichnis konnte am Laptop nicht geöffnet werden.

So, wie mein Zustand damals war, war das eh besser, denn ich wäre schön enttäuscht gewesen, wenn meine Konzentration für die verworrenen Programme nicht ausgereicht hätte. Und es gab ohnehin genügend andere Baustellen. Die Müdigkeit als ständiger Begleiter hat mir aber auch dort einen Strich durch die Rechnung gemacht.

Aber was war die Ursache dafür, dass Visual Studio das Projekt nicht öffnen konnte?

Einstellungen in OwnCloud

Bei einer Neuinstallation des OwnCloud-Clients am PC werden alle Dateien synchronisiert, und auf den ersten Blick und einigen Stunden Wartezeit bis zum Ende der Synchronisation schaut auch alles ganz ordentlich aus, jedenfalls meldet OwnCloud, dass 354 GB synchronisiert sind. Der größte Teil davon ist der Ordern clubintern, der mit allen Mitgliedern geteilt wird.

OwnCloud mit 254 GB synchronisiert

Schaltet man aber auf "Aktivität" -> "nicht synchronisiert" findet man eine beträchtliche Liste von Dateien, die nicht auf den Server kopiert worden sind, weil sie versteckt sind.

Versteckte Dateien wurden nicht synchronisiert

Welche Dateien werden vom System versteckt?

Versteckt (hidden) sind in erster Linie Dateien, die vom Betriebssystem (z.B. thumbs.db), von einem Programm (z.B. von Picasa .picasa.ini) oder – wie hier im Bild gezeigt – von der Programmierumgebung Visual Studio angelegt wurde (z.B. Wapp.v12.suo). Das obige Bildbeispiel zeigt, dass OwnCloud diese versteckten Dateien nicht repliziert, sie befinden sich nur am lokalen Rechner aber nicht in der Cloud. und daher wurden sie auch nicht auf den Laptop kopiert.

Diese letzteren Dateien (*.suo) werden von der Programmierumgebung verwaltet und „gehen den Benutzer nichts an“, daher sind sie versteckt. Wenn man nun aber solche Dateien in den OwnCloud repliziert und dann auf einem anderen Rechner weiterverarbeitet – genau das habe ich gemacht, dann fehlen diese wichtigen Dateien, und man kann die Projekte nicht öffnen.

Hinweis: Im OneDrive von Microsoft ist das nicht so, OneDrive verzichtet nur auf den Upload der Dateien thumbs.db.

Für dieses Synchronisationsproblem gibt es zwei Lösungsmöglichkeiten:

  • Man bringt OwnCloud bei, auch versteckte Dateien zu synchronisieren oder
  • Man löscht das Hidden-Attribut auf allen betroffenen Dateien.

OwnCloud synchronisiert auch versteckte Dateien…

…aber nur, wenn man das in den Einstellungen aktiviert, der Default-Fall ist „nicht synchronisieren“

In den Einstellungen kann man erzwingen, dass versteckte Dateien synchronisiert werden.

Da kann man schon fast sehr zufrieden sein. Allerdings werden mit diesem Schalter auch Dateien wie thumbs.db kopiert. thumbs.db entsteht in jedem Ordner, in dem sich Bilder befinden. Sie enthält Miniaturansichten aller Bilder. Damit wird der Bildaufbau erheblich beschleunigt. Löscht man diese Datei, dann wird sie beim nächsten Aufruf des Ordners im Explorer automatisch neu angelegt. Man sieht, dass es versteckte Dateien mit unterschiedlicher Wichtigkeit gibt.

Wem es also egal ist, ob hier auch unwichtige versteckte Dateien auf den Server kopiert werden, kann das Häkchen bei „Synchronisiere versteckte Dateien“ aktivieren, und alles wird synchronisiert.

Versteckt Dateien sichtbar machen…

…kann man mit einfachen Kommandozeilenaufrufen von PowerShell. Diese Aufrufe haben den Vorteil, dass man bestimmte Dateien ausschließen kann und dass daher nur jene Dateien auf den Server kopiert werden, die für die Funktion einer Anwendung notwendig sind.

Für Versuche mit versteckten Dateien wird am Desktop ein Ordner test mit den Dateien test1.txt (sichtbar) und test2.txt (versteckt) angelegt. In der Folge nähern wir uns dem Endergebnis, dem Sichtbarmachen der wichtigen versteckten Dateien.

Anzeige aller sichtbaren Dateien in einem Pfad

PS S:\>get-ChildItem -Path S:\OneDrive\desktop\test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 03.10.2022 10:15 0 test1.txt

Anzeige aller sichtbaren und versteckten Dateien

PS S:\>get-ChildItem -Path S:\OneDrive\desktop\test -Force
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 03.10.2022 10:15 0 test1.txt
-a-h-- 03.10.2022 10:15 0 test2.txt

Anzeige aller versteckten Dateien

PS S:\>get-ChildItem -Path S:\OneDrive\desktop\test -Force -ah
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a-h-- 03.10.2022 10:15 0 test2.txt

Ausschließen unwichtiger Dateien

Verschiedene versteckte Dateien sind zwar für den Aufruf durch ein Programm oder durch das System von Bedeutung, doch wenn sie nicht existieren, werden sie automatisch neu angelegt. Wir schon oben erwähnt können das sein desktop.ini, folder.ico, ~temporary.file oder thumbs.db. Gleichnamige, versteckte Dateien werden nun im Ordner /test angelegt, um zu prüfen, wie sie durch das Kommando berücksichtigt werden.

Inhalt des Ordners test
grüner Hreis mit Hackerl: alle diese Dateien werden in OneDrive übertragen. thumbs.db nicht
Einzige sichtbare Datei: test1.txt
Einzige wichtige versteckte Datei: test2.txt

Unterdrückung unwichtiger Dateien

PS S:\>Get-ChildItem -Path S:\OneDrive\desktop\test -Force -Recurse -ah | Where-Object{ ($_.Name -ne "thumbs.db") -and ($_.Name -notlike "~*") -and ($_.Name -ne "desktop.ini") -and ($_.Name -ne "folder.ico")}
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a-h-- 03.10.2022 10:15 0 test2.txt

-Force zeigt alle Dateien, unabhängig von ihrem Attribut
-Recurse führt den Befehl auch in allen tieferliegenden Unterverzeichnissen aus
-ah zeigt nur die Dateien mit dem Hidden-Attribut („h“)
$_ ist das von Get-Children zurückgelieferte Objekt.
| Where-Object{ ($_.Name -ne "thumbs.db") -and ($_.Name -notlike "~*") -and ($_.Name -ne "desktop.ini") -and ($_.Name -ne "folder.ico")} schließt die ausgewählten unsichtbaren Dateien aus, die nicht synchronisiert werden sollen. Diese Dateien bleiben versteckt und werden daher von OwnCloud nicht synchronisiert.

Löschen des Hidden-Attributs der erwünscht unsichtbaren Dateien

In diesem Beispiel ist allein die Datei test2.txt unsichtbar und soll daher den Status „hidden“ verlieren, damit sie von OwnCLoud auf den Server kopiert wird.

Jede, so gefundene versteckte Datei, die nicht in der Liste der Ausnahmen steht, wird mit dem folgenden Kommando „foreach“ und Write-Host ausgegeben:

PS S:\> Get-ChildItem -Path S:\OneDrive\desktop\test -Force -Recurse -ah | Where-Object{ ($_.Name -ne "thumbs.db") -and ($_.Name -notlike "~*") -and ($_.Name -ne "desktop.ini") -and ($_.Name -ne "folder.ico")} | foreach {Write-Host $_.FullName}

S:\OneDrive\desktop\test\test2.txt

Als einzige Datei wird test2.txt ausgegeben.

Ergänzt man die foreach-Schleife durch $_.Attributes = "Archive";, wird bei allen diesen Dateien das Hidden-Attribut gelöscht, sie werden sichtbar und daher von OwnCloud auf den Server kopiert.

PS S:\> Get-ChildItem -Path S:\OneDrive\desktop\test -Force -Recurse -ah | Where-Object{ ($_.Name -ne "thumbs.db") -and ($_.Name -notlike "~*") -and ($_.Name -ne "desktop.ini") -and ($_.Name -ne "folder.ico")} | foreach {$_.Attributes = "Archive"; Write-Host $_.FullName}

S:\OneDrive\desktop\test\test2.txt
Zur Werkzeugleiste springen