Odstranění duplicit a konsolidace dat

Re:Odstranění duplicit a konsolidace dat
« Odpověď #30 kdy: 14. 05. 2026, 20:50:48 »
protoze to fakt nevim, co je to kolona? jako pipeline?


Re:Odstranění duplicit a konsolidace dat
« Odpověď #31 kdy: 14. 05. 2026, 21:00:49 »
protoze to fakt nevim, co je to kolona? jako pipeline?
Podle kontextu roura (pipe).

Kit

  • *****
  • 1 041
    • Zobrazit profil
    • E-mail
Re:Odstranění duplicit a konsolidace dat
« Odpověď #32 kdy: 14. 05. 2026, 23:53:52 »
protoze to fakt nevim, co je to kolona? jako pipeline?

Slova pipe, roura a trubka se používají jako synonyma. Pipeline a kolona znamenají kaskádu pipe či trubek.

Re:Odstranění duplicit a konsolidace dat
« Odpověď #33 kdy: 16. 05. 2026, 13:55:24 »
A? Má to niečo spoločné s mojou prvotnou odpoveďou? Vidíte v nej niekde, že by som cez kolónu posielal nejaké veľké dáta?
Citace
... pretože v tom nikto žiadne veľké dáta cez kolónu neposiela.

A to je lež.

Lež??? Akože viem, že je to inak a úmyselne vás klamem? Ako si niečo také vôbec môžete dovoliť? Kto si myslíte, že ste???

Pokud jsi jen nevzdělaný, tak se omlouvám. Skutečností je, že v linuxovém světě se kolony běžně používají pro přenos velkých objemů dat, která by se do dočasných objektů ani nemohla vejít.

Budem sa tváriť, že som si nevšimol, že to ospravedlnenie je podmienené a prijímam ho.

Znova sa vás ale musím spýtať: No a? Citujete z mojich odpovedí a argumentujete Linuxom. Je tvrdenie, že "v linuxovém světě se kolony běžně používají pro přenos velkých objemů dat" dôkazom toho, že klamem, keď píšem, že v mojej prvotnej odpovedi v mnou poskytnutom riešení, ktoré sa Linuxu vôbec nijako netýka, "nikto žiadne veľké dáta cez kolónu neposiela"?

Moje odpovede majú jasne definovaný kontext, Linux je úplne mimo neho a jasne som vám už predtým napísal, že to, čo vy robíte na Linuxe ma absolútne vôbec nezaujíma.

Vyjadrujem sa výhradne k PowerShellu a k Windows, pričom Windows majú kolóny implementované úplne rovnako ako Linux, aby bolo (ostatným) jasné, že ten blud, ktorý ste tu šírili o dočasných súboroch je už viac ako 25 rokov jednoducho... nezmysel.

Mimochodom, vy si naozaj myslíte, že neviem ako funguje na Linuxe kolóna a čo sa s ňou dá robiť? A že mi to musíte vysvetľovať? Vy ste fakt dobrý.

Ve Windows se takové objemy nepoužívají a proto si vystačí s objekty uloženými v .NET . Pro spuštění kolony v rámci PowerShellu se tedy využívá tato mezivrstva. Pokud však jedním z členů komunikace je vnější proces, tak tuto službu zprostředkovává přímo jádro operačního systému, kterou si PowerShell obalí tak, že uživatel má pocit, že přenos dat dělá přímo PowerShell bez účasti jádra operačního systému.

V Linuxu však .NET ani PowerShell standardně nejsou, takže meziprocesová komunikace se nejjednoduššeji dělá právě pomocí služeb jádra operačního systému.
Aby nedošlo k omylu, teraz so mnou polemizujete v zmysle, že som zas niečo akože napísal nesprávne alebo je to váš nezávislý pohľad?

Objekty .Net sa týkajú výhradne PowerShellu, nie Windows všeobecne. A v kontexte PowerShellu je prvotné to, či odosielateľ alebo príjemca je alebo nie je z pohľadu PowerShellu externým programom. Objem dát je sekundárny faktor. Napríklad taký git pri väčšine operácii neposiela na štandardný výstup veľký objem dát. Je to ale stále externý program a tak na ten štandardný výstup neposiela objekty, ale text. A s textom, rozloženým na jednotlivé riadky, sa v ďalšom kroku kolóny pracuje. V bloku ForEach-Object je ale možné jednotlivú položku vo forme reťazca zabaliť do objektu PowerShellu, teda urobiť z položky vo forme reťazca vlastnosť vytvoreného objektu a pridať objektu aj ďalšie vlastnosti, ak je to potrebné. Ako výsledok spracovania v danej fáze bude do kolóny poslaná položka ako objekt a s tým sa potom už pracuje v ďalších fázach spracovania.

Vo Windows ako takom sa ale veľké objemy dát kolónou presúvať môžu a dajú. Keď to bude spustené mimo PowerShell, teda v rámci cmd.exe, bude to fungovať úplne rovnako ako na Linuxe. A keď to bude spustené v rámci PowerShellu, pôjde to cez jednu dodatočnú vrstvu, keďže je tam v hre .Net.

Či má používateľ nejaký pocit naozaj neviem. Pokiaľ je to bežný používateľ, tak nevie ako to funguje, jednoducho vlepí riadok z internetu a počká si ako to dopadne. Z okolitého popisu sa zvyčajne dá pochopiť, či to má byť vlepené do PowerShellu alebo do cmd.exe. Pokiaľ je to ale niekto, kto PowerShell pozná, tak vie, že nástroje, ktoré používa počas väčšiny svojej práce ako odosielateľov a príjemcov dát, sú interné a že prenášajú objekty. Veď tie dáta, ktoré po kolóne lietajú, bežne ako objekty používa - filtruje podľa ich pomenovaných vlastností alebo podľa pomenovaných vlastností usporiadáva, zoskupuje alebo si ich necháva zobraziť ako tabuľku, teda v stĺpcoch s možnosťou zobrazovania a skrývania jednotlivých stĺpcov podľa názvu vlastnosti. A keď potrebuje použiť externý program, tak vie, že je to externý program, a že ten, pokiaľ nebol písaný pre PowerShell, čo napríklad vyššie spomenutý git bude asi ťažko, nemôže posielať na výstup objekty PowerShellu, na ktoré je zvyknutý.

Vo Windows ale nikdy nevznikla kultúra zreťazenia činnosti viacerých malých programov. Prevažnú väčšinu používateľov Windows tvorili spotrebitelia zvyknutí na používateľské rozhranie a príkazový riadok im bol cudzí. Až neskôr vznikol PowerShell, ktorý mnohé z činnosti, ktoré v Linuxe riešia malé externé programy, rieši internými  nástrojmi z jeho štandardnej knižnice. Niečo o jeho histórii, motivácii a dôvodoch návrhu je v texte, ktorý som pripojil v predchádzajúcej správe. Mne pripadalo byť veľmi zaujímavé, že niekto chcel vytvoriť nástroj, ktorý by bol zároveň hostiteľom pre príkazový riadok, zároveň pokročilým programovacím jazykom s priamym napojením na behové prostredie alebo aj API operačného systému, a zároveň aj REPL toho programovacieho jazyka.

Nemám už na vás čas, ako som už písal: "do tejto témy zapojil výhradne kvôli tomu, že tu predtým panoval názor, že je nutné kvôli deduplikácii počítať hash z celého objemu dát všetkých súborov, čo teda ani náhodou nie je pravda."

Nad rámec toho si myslím, že som urobiť všetko, čo sa dalo, aby som vám (a ostatným) dostatočne objasnil, že to, čo ste tu písali o Windows je nezmysel.

Kit

  • *****
  • 1 041
    • Zobrazit profil
    • E-mail
Re:Odstranění duplicit a konsolidace dat
« Odpověď #34 kdy: 16. 05. 2026, 15:42:16 »
Objekty .Net sa týkajú výhradne PowerShellu, nie Windows všeobecne. A v kontexte PowerShellu je prvotné to, či odosielateľ alebo príjemca je alebo nie je z pohľadu PowerShellu externým programom. Objem dát je sekundárny faktor.

Dá se z jedné strany do objektu .NET zapisovat a současně z druhé strany číst? Pokud ne, tak je to jiný mechanismus než roura. Pokud ano, tak je to pojmenovaná roura, která se v Linuxu také používá.

Jakým způsobem PowerShell předává data externímu programu? Také přes objekty, nebo přes dočasné soubory?


Re:Odstranění duplicit a konsolidace dat
« Odpověď #35 kdy: 15. 08. 2026, 12:42:45 »
musim uz ty duplicity nejak resit.

rmlint

https://github.com/sahib/rmlint

Má to veľa možností, ale ja využívam takéto niečo:

rmlint /mnt/kopia1 /mnt/kopia2 // /mnt/archiv --types=df --hidden --progress --paranoid --keep-all-tagged --must-match-tagged --match-basename --match-extension --mtime-window=0

Vygeneruje to json súbor s podrobnosťami, ktoré môžete kvôli kontrole spracovať iným spôsobom a sh súbor s príkazmi na mazanie, takže pri spustení rmlint s uvedenými parametrami nič nezmaže, kým nespustíte ten sh súbor - samozrejme môžete niektoré parametre vynechať - to už je na vás, čo si zvolíte po prečítaní manuálu  :)

/mnt/kopia1 /mnt/kopia2 sú nové "untagged" adresáre, z ktorých chcem vymazať duplicity
// je oddeľovač, za ním sú "tagged" adresáre, v ktorých nechcem nič mazať - t.j. --keep-all-tagged
/mnt/archiv obsahuje súbory, ktoré už mám spracované a nepotrebujem tam hľadať duplicity
dosť často používam aj --size

Kód: [Vybrat]
Usage:
  rmlint [OPTION…] [TARGET_DIR_OR_FILES …] [//] [TAGGED_TARGET_DIR_OR_FILES …] [-]

rmlint finds space waste and other broken things on your filesystem and offers to remove it.
It is especially good at finding duplicates and offers a big variety of options to handle them.

Help Options:
  -h, --help                           Show help options
  --help-all                           Show all help options

Application Options:
  -d, --max-depth=N                    Specify max traversal depth
  -S, --rank-by=[dlamprxDLAMPRX]       Select originals by given  criteria
  -y, --sort-by=[moansMOANS]           Sort rmlint output by given criteria
  -T, --types=T                        Specify lint types
  -s, --size=m-M                       Specify size limits
  -a, --algorithm=A                    Choose hash algorithm
  -o, --output=FMT[:PATH]              Add output (override default)
  -O, --add-output=FMT[:PATH]          Add output (add to defaults)
  -n, --newer-than-stamp=PATH          Newer than stamp file
  -N, --newer-than=STAMP               Newer than timestamp
  -c, --config=FMT:K[=V]               Configure a formatter
  -C, --xattr=                         Enable xattr based caching
  -g, --progress                       Enable progressbar
  -v, --loud                           Be more verbose (-vvv for much more)
  -V, --quiet                          Be less verbose (-VVV for much less)
  -Y, --replay=path/to/rmlint.json     Re-output a json file
  --equal=PATHS                        Test for equality of PATHS
  -W, --no-with-color                  Be not that colorful
  -r, --hidden                         Find hidden files
  -f, --followlinks                    Follow symlinks
  -F, --no-followlinks                 Ignore symlinks
  -p, --paranoid                       Use more paranoid hashing
  -x, --no-crossdev                    Do not cross mountpoints
  -k, --keep-all-tagged                Keep all tagged files
  -K, --keep-all-untagged              Keep all untagged files
  -m, --must-match-tagged              Must have twin in tagged dir
  -M, --must-match-untagged            Must have twin in untagged dir
  -b, --match-basename                 Only find twins with same basename
  -e, --match-extension                Only find twins with same extension
  -i, --match-without-extension        Only find twins with same basename minus extension
  -D, --merge-directories              Find duplicate directories
  -j, --honour-dir-layout              Only find directories with same file layout
  -z, --perms=[RWX]+                   Only use files with certain permissions
  -L, --no-hardlinked                  Ignore hardlink twins
  --keep-hardlinked                    Keep hardlink that are linked to any original
  --partial-hidden                     Find hidden files in duplicate folders only
  -Z, --mtime-window=T                 Consider duplicates only equal when mtime differs at max. T seconds
  -0, --stdin0                         Read null-separated file list from stdin
  --backup                             Do create backups of previous result files
  --dedupe                             Dedupe matching extents from source to dest (if filesystem supports)
  --dedupe-xattr                       Check extended attributes to see if the file is already deduplicated
  --dedupe-readonly                    (--dedupe option) even dedupe read-only snapshots (needs root)
  --is-reflink                         Test if two files are reflinks (share same data extents)
  -H, --show-man                       Show the manpage
  --version                            Show the version & features
  --gui                                If installed, start the optional gui with all following args
  --hash                               Work like sha1sum for all supported hash algorithms (see also --hash --help)
  -q, --clamp-low=P                    Limit lower reading barrier
  -Q, --clamp-top=P                    Limit upper reading barrier

Only the most important options and options that alter the defaults are shown above.
See the manpage (man 1 rmlint or rmlint --show-man) for far more detailed usage information,
or http://rmlint.rtfd.org/en/latest/rmlint.1.html for the online manpage.
Complementary tutorials can be found at: http://rmlint.rtfd.org