Možná na to někdy narazíte, že na disku QNAP NAS je složka .streams (co není normálně vidět) a může být i poměrně velká. Je dobré vědět o co jde.
Pokud na QNAP NAS ukládate soubory přes SMB (ale i jinak z jiných operačních systémů, tak je běžné, že soubory mívají “extended attributes”, kupu věci jaksi navíc, které nejsou moc vidět. Ve Windows je toho například kupa v NTFS, ale Apple je také vynikající v tom, že neustále někam přidává a ukládá věci, o kterých ani nemáte tušení.
Tyhle věci nejsou ukládat přímo do souborového systému na QNAPu – Linux tyhle extra věci (NTFS Alternate Data Stream například) přímo nepodporuje. Takže se ukládají do složky .streams. V rootu konkrétního Share/Sdílení.
macOS přes SMB také používá speciální metadata a resource forks. Samba modul vfs_fruit pracuje například se streamy AFP_AfpInfo a AFP_Resource; ostatní pojmenované streamy může předávat dalšímu modulu.
Uvnitř .share je strom hashovaných adresářů přibližně této podoby:
.streams/XX/YY/identifikator-souboru/nazev-streamu
Identifikátor vychází z identifikace souboru ve filesystemu, zejména z filesystem ID a inode. Poslední položkou jsou běžné samostatné soubory obsahující data konkrétního streamu.
TIP: Chcete vědět co ve složce .streams je? V terminalu se na to můžete podívat dost snadno:
find ./.streams -type f 2>/dev/null | sed ‚s#^.*/##‘ | sort | uniq -c | sort -nr
Kolik že to zabírá a kolik toho je?
du -sh .streams
find .streams -type f 2>/dev/null | wc -l
Jak se toho zbavit?
.streams není jeden velký databázový soubor. Je to celý skrytý adresář v kořeni konkrétního sdílení. Uvnitř jsou tisíce či miliony dalších adresářů a souborů. Smazáním .streams nesmažete vlastní dokumenty, fotografie či videa, ale smažete všechny jejich pojmenované datové streamy uložené tímto způsobem. A ty nemusí být vždy bezcenné.
Hlavní obsah souboru je výchozí, nepojmenovaný stream. Ostatní streamy mohou obsahovat metadata, bezpečnostní informace, pomocná data aplikace, ale teoreticky i libovolná skutečná data.
Kdy může dávat kompletní smazání smysl
Relativně malé riziko bude u sdílení obsahujícího například:
- běžná videa a fotografie,
- kopie instalačních souborů,
- dočasná data,
- stažené archivy,
- data, u kterých metadata nepotřebujete,
- soubory, které máte bezpečně uložené ještě jinde.
Vyšší riziko je u:
- pracovních dat používaných přímo ze sdílení,
- sdílení používaného Macy,
- archivů starších macOS souborů,
- aplikací ukládajících přímo na SMB,
- dat migrovaných z NTFS se zachováním ADS,
- neznámých nebo proprietárních formátů,
- sdílení používaného více operačními systémy.
Zálohování a obnova: snadno opomenutelný problém
Nestačí jednoduše zkopírovat adresář .streams na jiný NAS.
Protože jednotlivé adresáře používají filesystem ID a inode původních souborů, po běžném překopírování hlavních souborů vzniknou na cílovém filesystemu jiné identifikátory. Zkopírovaná .streams se tak nemusí k novým souborům vůbec připojit. Správná záloha musí být buď:
- filesystemová replika či snapshot zachovávající příslušné vazby,
- nebo zálohovací nástroj, který streamy čte a zapisuje logicky přes SMB či podporované atributy.
Přesuny přes SSH, NFS a různé protokoly
Pokud na datech záleží, nemanipulovat s nimi střídavě přes SMB, NFS, FTP, SSH a lokální QNAP aplikace.
Samba při smazání souboru přes SMB uklízí i jeho streamový adresář. Proces, který smaže soubor přímo ve filesystemu, o této vazbě nemusí vědět. Právě tam vznikají osiřelé položky.
Zvlášť problematický může být lokální přesun souboru mezi dvěma různými sdíleními. Soubor si může zachovat inode, ale každé sdílení má jiný kořen
Lze vytváření .streams vypnout?
Technicky lze změnit konfiguraci Samby, odebrat podporu named streams nebo použít jiné úložiště streamů. Není to ale běžné nastavení vlastností sdílené složky v QTS. Dokumentované volby sdílení QTS 5.2 samostatný přepínač pro ADS nebo .streams neobsahují.
Vypnutí může způsobit:
- ztrátu kompatibility s některými aplikacemi,
- problémy s Windows soubory používajícími ADS,
- horší spolupráci s macOS,
- chyby při kopírování souborů,
- ztrátu některých bezpečnostních metadat.
Samba například uvádí, že některé aplikace očekávají funkční podporu této věci bez podpory mohou selhat.
