Hostwinds Blog
Résultats de recherche pour:
Depuis 1995, le Microsoft Windows NTFS Le système de fichiers a pris en charge les flux.En fait, tous les "fichiers" NTFS sont réellement des flux.Ce que nous considérons normalement comme un fichier dans NTFS est plus précisément appelé un flux de données par défaut.Un flux de données par défaut n'est pas nommé.Qu'est-ce qu'un flux de données anonyme?Considérez le format de nom de fichier entièrement qualifié NTFS:
file-name:stream-name:stream-type
De gauche à droite, nous avons:
Un exemple suit:
myTextFile.txt
Il s'agit d'un flux de données par défaut.Comme mentionné, les flux de données par défaut ne sont pas nommés.Cela peut être vu dans sa forme de nom de fichier entièrement qualifiée:
myTextFile.txt::$DATA
Le fait qu'il n'y ait rien entre les deux colons (: :) indique qu'il s'agit d'un flux de données anonyme.Pour un flux de données par défaut, nous n'avons pas besoin d'utiliser le nom de fichier entièrement qualifié, bien que nous le pouvons.Par exemple, à partir de l'invite de commande Windows, les deux commandes suivantes s'ouvrent précisément le même flux de données par défaut:
notepad myTextFile.txt
notepad myTextFile.txt::$DATA
Pour simplifier les choses, nous utiliserons le terme "fichier" à la place du "flux de données par défaut" plus précis.
Vous pouvez créer un flux nommé dans un fichier en utilisant NTFS normal conventions de nommage.Par exemple, à partir de l'invite de commande, exécutez ce qui suit:
notepad foo.docx:bar.txt
Sélectionner Oui Lorsqu'on vous a demandé si vous souhaitez créer un nouveau fichier.Ensuite, saisissez le contenu suivant:
This is the named stream "bar.txt" that is in (attached to) the file "foo.docx".
Enregistrez et sortez le bloc-notes.
Lorsque vous exécutez la commande dir, vous verrez un fichier nommé foo.docx dont la taille, intéressant, est de 0 octets.Cependant, lorsque vous exécutez la commande dir / r, vous verrez le flux de données nommé que vous venez de créer, dont la taille est de 80 octets:
Ces deux tailles de flux ont un sens dans ce flux FOO.DOCX n'a pas de contenu tandis que Stream Foo.docx: Bar.txt a 80 octets de contenu.Pour aider à élucider cela, ajoutez du contenu au flux de données par défaut, comme suit:
notepad foo.docx
Entrez le texte suivant:
This is the default data stream (file) named "foo.docx", which has one named data stream attached to it, called "bar.txt".
Enregistrez et sortez le bloc-notes.
Exécutez à nouveau Dir / R et notez que le flux de données par défaut FOO.DOCX contient désormais 120 octets de données:
Pour cette raison, nous pouvons dire que les deux flux consomment 200 octets sur le volume.Cela dit, l'exécution de la commande DIR sans adoration fournit des informations quelque peu trompeuses - cela implique que FOO.DOCX ne contient que 120 octets de données, ce qui est inexact dans le sensVolume comme espace libre disponible:
del foo.docx
dir /r
La morale de l'histoire est peut-être d'utiliser toujours le commutateur / r.Ce qui soulève la question, comment trouvez-vous tous les fichiers contenant des flux "cachés"?Ce sujet est discuté ensuite.
Si nous laissons le terme "fichier" signifie "Stream de données par défaut" et "Stream" signifie "Stream de données nommé", nous pouvons utiliser PowerShell pour trouver tous les fichiers contenant des flux comme suit.
Ouvrez une invite de commande PowerShell et exécutez éventuellement la commande suivante (cela supprime les messages d'erreur refusés du fichier éventuels):
$ErrorActionPreference = "SilentlyContinue"
Ensuite, exécutez les commandes suivantes:
Get-ChildItem -Path \ -Recurse | Get-Item -Stream * | Where-Object Stream -ne ':$DATA' | Convert-Path
Pour le volume actuel, cela renvoie une liste de tous les fichiers contenant un ou plusieurs flux.Ce pipeline PowerShell est expliqué comme suit:
À partir d'une invite de commande PowerShell, vous pouvez supprimer le flux bar.txt du fichier foo.docx comme suit:
Remove-Item -Path .\foo.docx -Stream bar.txt
Si le nom du flux a des espaces, vous devez utiliser des citations, comme dans:
Remove-Item -Path ".\Bob's Grandfather.png" -Stream "Image Info.txt"
L'intention d'origine des flux NTFS était de permettre l'interopérabilité du fichier Apple Macintosh, mais les flux NTFS peuvent être très utiles.Par exemple, vous souhaiterez peut-être «intégrer» des informations détaillées dans les fichiers photographiques de la famille:
Si le fichier image ci-dessus était nommé "Bob's Grandfather.png", vous pouvez ajouter un flux (en utilisant PowerShell) contenant des informations d'image détaillées, comme suit:
Set-Content -Path ".\Bob's Grandfather.png" -Stream "image-info.txt" -Value "This is Bob's grandfather (on his mother's side) in the Gold Rush Bar and Restaurant in Seattle, WA - circa 1856."
Pour afficher les métadonnées d'image que vous venez de définir, exécutez:
Get-Content -Path ".\Bob's Grandfather.png" -Stream "image-info.txt"
Notez que l'argument -stream nécessite que vous connaissiez le nom exact du ruisseau (les caractères génériques ne sont pas autorisés).Rappelez-vous que vous pouvez toujours obtenir des noms de flux à l'aide de Get-Item (qui accepte les wilkcards):
Get-Item -Path '.\Bob''s Grandfather.png' -Stream *
Pour le nom du flux recherché, regardez la propriété du flux dans la sortie résultante:
D'autres utilisations pour les flux NTFS peuvent inclure:
Enfin, vous avez peut-être noté que votre volume contient un certain nombre de flux nommés Zone.Identifier.Ces flux sont généralement utilisés par Windows pour le stockage des zones de sécurité URL, qui déterminent si un fichier doit faire confiance ou non.Un exemple montrant comment afficher le contenu d'une zone.
Get-Content -Path .\sanders.net-May-2022.gz -Stream Zone.Identifier
Et via l'invite de commande Windows:
notepad sanders.net-May-2022.gz:Zone.Identifier
J'espère que vous avez trouvé cet article intéressant;Et vous trouverez peut-être des utilisations intéressantes pour les flux NTFS pour démarrer.
Écrit par Karlito Bonnevie / Peut 24, 2022