Hostwinds Blog
Cerca risultati per:
Dal 1995, Microsoft Windows Ntfs Il file system ha flussi supportati.In effetti, tutti i "file" di NTF sono in realtà flussi.Ciò che normalmente pensiamo come un file in NTFS è più precisamente chiamato un flusso di dati predefinito.Un flusso di dati predefinito è senza nome.Cos'è un flusso di dati senza nome?Prendi in considerazione il formato di file file completamente qualificato NTFS:
file-name:stream-name:stream-type
Da sinistra a destra, abbiamo:
Segue un esempio:
myTextFile.txt
Questo è un flusso di dati predefinito.Come accennato, i flussi di dati predefiniti sono senza nome.Questo può essere visto nel suo modulo di nome file completamente qualificato:
myTextFile.txt::$DATA
Il fatto che non ci sia nulla tra i due punti (: :) indica che si tratta di un flusso di dati senza nome.Per un flusso di dati predefinito, non è necessario utilizzare il nome file completamente qualificato, anche se possiamo.Ad esempio, dal prompt dei comandi di Windows, i seguenti due comandi aprono esattamente lo stesso flusso di dati predefinito:
notepad myTextFile.txt
notepad myTextFile.txt::$DATA
Per semplificare le cose, useremo il termine "file" al posto del "flusso di dati predefinito" più accurato.
È possibile creare un flusso denominato in un file utilizzando NTF normali Convenzioni di denominazione.Ad esempio, dal prompt dei comandi, esegui quanto segue:
notepad foo.docx:bar.txt
Selezionare sì Alla domanda se si desidera creare un nuovo file.Successivamente, digita il seguente contenuto:
This is the named stream "bar.txt" that is in (attached to) the file "foo.docx".
Salva ed esci Blocco note.
Quando esegui il comando dir, vedrai un file chiamato foo.docx la cui dimensione, interessante, è 0 byte.Tuttavia, quando si esegue il comando dir /r, vedrai il flusso di dati denominato appena creato, la cui dimensione è 80 byte:
Queste due dimensioni del flusso hanno senso in quel flusso foo.docx non ha contenuti mentre lo streaming foo.docx: bar.txt ha 80 byte di contenuti.Per aiutare a chiarire questo, aggiungi alcuni contenuti al flusso di dati predefinito, come segue:
notepad foo.docx
Immettere il seguente testo:
This is the default data stream (file) named "foo.docx", which has one named data stream attached to it, called "bar.txt".
Salva ed esci Blocco note.
Esegui di nuovo Dir /R e si noti che il flusso di dati predefinito Foo.docx ora contiene 120 byte di dati:
Per questo motivo, possiamo dire che i due flussi consumano 200 byte sul volume.Detto questo, l'esecuzione del comando dir disadorno fornisce informazioni in qualche modo fuorvianti - implica che foo.docx contiene solo 120 byte di dati, il che è inaccurato nel senso che quando elimini foo.docx, in realtà stai rilasciando 200 byte avolume come spazio libero disponibile:
del foo.docx
dir /r
La morale della storia, forse, è quella di usare sempre l'interruttore /R.Il che pone la domanda, come trovi tutti i file che contengono flussi "nascosti"?Quell'argomento è discusso in seguito.
Se consentiamo al termine "file" medio "flusso di dati predefiniti" e "flusso" medio "flusso di dati denominato", allora possiamo usare PowerShell per trovare tutti i file contenenti flussi come segue.
Apri un prompt dei comandi PowerShell ed esegui facoltativamente il seguente comando (questo sopprime i messaggi di errore negati e possibilmente fastidiosi):
$ErrorActionPreference = "SilentlyContinue"
Quindi, eseguire i seguenti comandi:
Get-ChildItem -Path \ -Recurse | Get-Item -Stream * | Where-Object Stream -ne ':$DATA' | Convert-Path
Per il volume corrente, questo restituisce un elenco di tutti i file contenenti uno o più flussi.Questa pipeline PowerShell è spiegata come segue:
Da un prompt dei comandi PowerShell, è possibile rimuovere la barra di streaming.txt dal file foo.docx come segue:
Remove-Item -Path .\foo.docx -Stream bar.txt
Se il nome del flusso ha spazi, è necessario utilizzare le citazioni, come in:
Remove-Item -Path ".\Bob's Grandfather.png" -Stream "Image Info.txt"
L'intento originale dei flussi NTFS era abilitare l'interoperabilità dei file di Apple Macintosh, ma i flussi NTFS possono essere abbastanza utili.Ad esempio, potresti voler "incorporare" informazioni dettagliate all'interno dei file di fotografie di famiglia:
Se il file di immagine sopra è stato chiamato "nonno di Bob.png", è possibile aggiungere un flusso (usando PowerShell) contenente informazioni dettagliate sull'immagine, come segue:
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."
Per visualizzare i metadati dell'immagine che hai semplicemente impostato, esegui:
Get-Content -Path ".\Bob's Grandfather.png" -Stream "image-info.txt"
Si noti che l'argomento -Stream richiede che tu sappia il nome esatto del flusso (i caratteri jolly non sono consentiti).Ricordiamo che puoi sempre ottenere nomi di streaming usando Get-Etim (che accetta i caratteri jolly):
Get-Item -Path '.\Bob''s Grandfather.png' -Stream *
Per il nome del flusso richiesto, guarda la proprietà del flusso nell'output risultante:
Altri usi per i flussi NTFS possono includere:
Infine, potresti aver notato che il tuo volume contiene un numero di flussi denominati Zone.Identificier.Questi flussi sono generalmente utilizzati da Windows per l'archiviazione delle zone di sicurezza URL, che determinano se un file deve essere attendibile o meno.Un esempio che mostra come visualizzare il contenuto di una zona. Stream di identificatore segue:
Get-Content -Path .\sanders.net-May-2022.gz -Stream Zone.Identifier
E tramite il prompt dei comandi di Windows:
notepad sanders.net-May-2022.gz:Zone.Identifier
Spero che tu abbia trovato questo articolo interessante;E forse troverai alcuni usi interessanti per l'avvio di NTFS.
Scritto da Karlito Bonnevie / Maggio 24, 2022