Nipa ọna ajeji fun fifipamọ aaye disk lile

Olumulo miiran fẹ lati kọ nkan tuntun ti data si dirafu lile, ṣugbọn ko ni aaye ọfẹ to lati ṣe eyi. Emi ko tun fẹ lati pa ohunkohun rẹ, nitori “ohun gbogbo ṣe pataki pupọ ati pataki.” Ati kini o yẹ ki a ṣe pẹlu rẹ?

Ko si eni ti o ni iṣoro yii. Awọn terabytes ti alaye wa lori awọn dirafu lile wa, ati pe iye yii ko ṣọ lati dinku. Ṣugbọn bawo ni o ṣe jẹ alailẹgbẹ? Ni ipari, gbogbo awọn faili jẹ awọn akojọpọ awọn iwọn ti ipari kan ati, julọ julọ, eyi tuntun ko yatọ pupọ si eyiti o ti fipamọ tẹlẹ.

O han gbangba pe wiwa awọn ege alaye ti o ti fipamọ sori dirafu lile jẹ, ti kii ba ikuna, lẹhinna o kere kii ṣe iṣẹ-ṣiṣe ti o munadoko. Ni apa keji, ti iyatọ ba kere, lẹhinna o le ṣatunṣe diẹ ...

Nipa ọna ajeji fun fifipamọ aaye disk lile

TL; DR - igbiyanju keji lati sọrọ nipa ọna ajeji ti iṣapeye data nipa lilo awọn faili JPEG, ni bayi ni fọọmu oye diẹ sii.

Nipa die-die ati iyato

Ti o ba mu awọn ege data laileto meji patapata, lẹhinna ni apapọ idaji awọn ege ti wọn wa ninu wọn ṣe deede. Lootọ, laarin awọn ipilẹ ti o ṣeeṣe fun bata kọọkan ('00, 01, 10, 11′), idaji gangan ni awọn iye kanna, ohun gbogbo rọrun nibi.

Ṣugbọn dajudaju, ti a ba kan mu awọn faili meji ki o baamu ọkan si ekeji, lẹhinna a yoo padanu ọkan ninu wọn. Ti a ba ṣafipamọ awọn ayipada, a yoo tun ṣẹda delta kooduopo, eyiti o wa ni pipe daradara laisi wa, botilẹjẹpe kii ṣe igbagbogbo lo fun awọn idi kanna. A le gbiyanju lati fi sabe kan kere ọkọọkan sinu kan ti o tobi, sugbon ani ki a ewu ọdun lominu ni apa ti data ti a ba lo o laišišẹ pẹlu ohun gbogbo.

Laarin kini ati kini lẹhinna a le yọ iyatọ kuro? O dara, iyẹn ni, faili tuntun ti a kọ nipasẹ olumulo jẹ ọna kan ti awọn bit, pẹlu eyiti a ko le ṣe ohunkohun funrararẹ. Lẹhinna o kan nilo lati wa iru awọn die-die lori dirafu lile ti wọn le yipada laisi nini lati tọju iyatọ, ki o le ye ipadanu wọn laisi awọn abajade to ṣe pataki. Ati pe o jẹ oye lati yipada kii ṣe faili nikan lori FS funrararẹ, ṣugbọn diẹ ninu alaye ifura ti o kere ju ninu rẹ. Ṣugbọn kini ati bawo?

Awọn ọna ibamu

Awọn faili fisinuirindigbindigbin ti o padanu wa si igbala. Gbogbo awọn jpeg wọnyi, mp3s ati awọn miiran, botilẹjẹpe ipadanu pipadanu, ni opo awọn die-die ti o le yipada lailewu. O ṣee ṣe lati lo awọn imọ-ẹrọ ilọsiwaju ti o ṣe iyipada awọn paati wọn ni aibikita ni awọn ipele pupọ ti fifi koodu. Duro. Awọn imọ-ẹrọ to ti ni ilọsiwaju… iyipada imperceptible… kan bit sinu omiiran… o fẹrẹ dabi steganography!

Nitootọ, ifibọ alaye kan sinu omiiran jẹ iranti ti awọn ọna rẹ bi nkan miiran. Ó tún wú mi lórí gan-an nípa àìpé àwọn ìyípadà tí wọ́n ṣe sí ẹ̀dá èèyàn. Nibiti awọn ọna ti o yatọ si wa ni aṣiri: iṣẹ-ṣiṣe wa sọkalẹ si olumulo ti n tẹ alaye afikun sii sori dirafu lile rẹ; yoo ṣe ipalara fun u nikan. Oun yoo tun gbagbe.

Nitorinaa, botilẹjẹpe a le lo wọn, a nilo lati ṣe diẹ ninu awọn iyipada. Ati lẹhinna Emi yoo sọ ati ṣafihan wọn nipa lilo apẹẹrẹ ti ọkan ninu awọn ọna ti o wa tẹlẹ ati ọna kika faili ti o wọpọ.

Nipa jackals

Ti o ba fun pọ gaan, o jẹ ohun ti o ni titẹ julọ ni agbaye. A n, dajudaju, sọrọ nipa awọn faili JPEG. Kii ṣe awọn toonu ti awọn irinṣẹ ati awọn ọna ti o wa tẹlẹ fun fifi data sinu rẹ, ṣugbọn o jẹ ọna kika awọn aworan olokiki julọ lori aye yii.

Nipa ọna ajeji fun fifipamọ aaye disk lile

Sibẹsibẹ, ni ibere ki o má ba ṣe ni ibisi aja, o nilo lati ṣe idinwo aaye iṣẹ rẹ ni awọn faili ti ọna kika yii. Ko si ẹnikan ti o fẹran awọn onigun mẹrin monochrome ti o han nitori funmorawon pupọ, nitorinaa o nilo lati fi opin si ararẹ lati ṣiṣẹ pẹlu faili fisinuirindigbindigbin tẹlẹ, yago fun atunkọ. Ni pataki diẹ sii, pẹlu awọn onisọdipupo odidi, eyiti o wa lẹhin awọn iṣẹ ṣiṣe lodidi fun pipadanu data - DCT ati titobi, eyiti o ṣafihan ni pipe ninu ero fifi koodu (ọpẹ si wiki ti Ile-ikawe Orilẹ-ede Bauman):
Nipa ọna ajeji fun fifipamọ aaye disk lile

Ọpọlọpọ awọn ọna ti o ṣeeṣe lo wa fun iṣapeye awọn faili jpeg. Imudara ti ko ni ipadanu wa (jpegtran), iṣapeye wa "ko si pipadanu", eyiti o ṣe alabapin nkan miiran, ṣugbọn a ko bikita nipa wọn. Lẹhinna, ti olumulo ba ṣetan lati fi ifitonileti kan sinu omiiran lati le mu aaye disk ọfẹ pọ si, lẹhinna o ṣe iṣapeye awọn aworan rẹ ni igba pipẹ sẹhin, tabi ko fẹ ṣe eyi rara fun iberu ti isonu ti didara.

F5

Gbogbo ẹbi ti awọn algoridimu ni ibamu pẹlu awọn ipo wọnyi, eyiti o le mọ ara rẹ pẹlu ni yi ti o dara igbejade. Julọ to ti ni ilọsiwaju ninu wọn ni alugoridimu F5 nipasẹ Andreas Westfeld, ṣiṣẹ pẹlu awọn iyeida ti paati imọlẹ, nitori oju eniyan ko ni itara si awọn iyipada rẹ. Pẹlupẹlu, o nlo ilana ifibọ ti o da lori fifi koodu matrix, eyiti o jẹ ki o ṣee ṣe lati ṣe awọn ayipada diẹ nigbati o ba nfi iye kanna ti alaye sii, ti o tobi iwọn ti eiyan ti a lo.

Awọn iyipada funrara wọn ṣan silẹ lati dinku iye pipe ti awọn alafisọfidipu nipasẹ ọkan labẹ awọn ipo kan (iyẹn, kii ṣe nigbagbogbo), eyiti o fun ọ laaye lati lo F5 lati mu ibi ipamọ data pọ si lori dirafu lile rẹ. Koko-ọrọ ni pe olusọdipúpọ lẹhin iru iyipada bẹẹ yoo ṣee ṣe julọ gba awọn iwọn diẹ lẹhin fifi koodu Huffman nitori pinpin iṣiro ti awọn iye ni JPEG, ati pe awọn odo tuntun yoo fun ere nigbati fifi koodu wọn pamọ ni lilo RLE.

Awọn iyipada to ṣe pataki ṣan silẹ lati yọkuro apakan lodidi fun aṣiri (atunṣe ọrọ igbaniwọle), eyiti o fipamọ awọn orisun ati akoko ipaniyan, ati fifi ẹrọ kan kun fun ṣiṣẹ pẹlu ọpọlọpọ awọn faili dipo ọkan ni akoko kan. Oluka naa ko ṣeeṣe lati nifẹ ninu ilana iyipada ni awọn alaye diẹ sii, nitorinaa jẹ ki a lọ si apejuwe ti imuse.

Ise owo to ga

Lati ṣe afihan bi ọna yii ṣe n ṣiṣẹ, Mo ṣe imuse ọna naa ni mimọ C ati pe o ṣe ọpọlọpọ awọn iṣapeye mejeeji ni awọn ọna ti iyara ipaniyan ati iranti (o ko le fojuinu iye awọn aworan wọnyi ṣe iwọn laisi titẹkuro, paapaa ṣaaju DCT). Agbelebu-Syeed waye nipa lilo apapo awọn ile-ikawe libjpeg, pcre и tinydir, fun eyiti a dupẹ lọwọ wọn. Gbogbo eyi ni a fi papọ nipasẹ 'ṣe', nitorinaa awọn olumulo Windows fẹ lati fi sori ẹrọ diẹ ninu Cygwin fun ara wọn fun igbelewọn, tabi ṣe pẹlu Visual Studio ati awọn ile-ikawe funrararẹ.

Imuse naa wa ni irisi ohun elo console ati ile-ikawe. Awọn ti o nifẹ le wa diẹ sii nipa lilo igbehin ni kika ni ibi ipamọ lori Github, ọna asopọ si eyiti Emi yoo so ni ipari ifiweranṣẹ naa.

Bawo ni lati lo?

Ni ifarabalẹ. Awọn aworan ti a lo fun iṣakojọpọ ni a yan nipasẹ wiwa nipa lilo ikosile deede ni itọsọna root ti a fun. Ni ipari, awọn faili le ṣee gbe, fun lorukọmii ati daakọ ni ifẹ laarin awọn aala rẹ, iyipada faili ati awọn ọna ṣiṣe, bbl Sibẹsibẹ, o yẹ ki o ṣọra pupọ ati ki o ma ṣe yi akoonu lẹsẹkẹsẹ pada ni eyikeyi ọna. Pipadanu iye ti paapaa bit kan le jẹ ki o ṣee ṣe lati gba alaye pada.

Ni ipari, IwUlO fi faili ipamọ pataki kan silẹ ti o ni gbogbo alaye pataki fun ṣiṣi silẹ, pẹlu data nipa awọn aworan ti a lo. Nipa ara rẹ, o ṣe iwọn nipa tọkọtaya kilobytes ati pe ko ni ipa pataki lori aaye disk ti tẹdo.

O le ṣe itupalẹ agbara ti o ṣeeṣe nipa lilo asia '-a': './f5ar -a [folda àwárí] [ikosile deede Perl-ibaramu]'. Iṣakojọpọ ni a ṣe pẹlu aṣẹ './f5ar -p [folda wiwa] [ikosile deede Perl-ibaramu] [faili ti o kojọpọ] [orukọ pamosi]’, ati ṣiṣi silẹ pẹlu './f5ar -u [faili pamosi] [orukọ faili ti o gba pada ]' .

Ifihan iṣẹ

Lati ṣafihan imunadoko ti ọna naa, Mo ṣe ikojọpọ ti awọn fọto 225 ti o ni ọfẹ ti awọn aja lati iṣẹ naa Imukuro ati pe o rii ninu awọn iwe aṣẹ pdf nla ti awọn mita 45 ti iwọn didun keji Aworan ti siseto Knuta.

Ọkọọkan jẹ ohun rọrun:

$ du -sh knuth.pdf dogs/
44M knuth.pdf
633M dogs/

$ ./f5ar -p dogs/ .*jpg knuth.pdf dogs.f5ar
Reading compressing file... ok
Initializing the archive... ok
Analysing library capacity... done in 17.0s
Detected somewhat guaranteed capacity of 48439359 bytes
Detected possible capacity of upto 102618787 bytes
Compressing... done in 39.4s
Saving the archive... ok

$ ./f5ar -u dogs/dogs.f5ar knuth_unpacked.pdf
Initializing the archive... ok
Reading the archive file... ok
Filling the archive with files... done in 1.4s
Decompressing... done in 21.0s
Writing extracted data... ok

$ sha1sum knuth.pdf knuth_unpacked.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth_unpacked.pdf

$ du -sh dogs/
551M dogs/

Awọn sikirinisoti fun awọn onijakidijagan

Nipa ọna ajeji fun fifipamọ aaye disk lile

Faili ti a ko tii le ati pe o yẹ ki o tun ka:

Nipa ọna ajeji fun fifipamọ aaye disk lile

Bi o ti le ri, lati atilẹba 633 + 36 == 669 megabyte ti data lori dirafu lile, a wa si diẹ dídùn 551. Iru iyatọ ti ipilẹṣẹ ni a ṣe alaye nipasẹ idinku ninu awọn iye ti awọn iyeida, eyi ti o ni ipa lori wọn. funmorawon ti ko ni ipadanu ti o tẹle: idinku ọkan nipasẹ ẹyọkan le ni irọrun “ ge awọn baiti meji kuro ninu faili ikẹhin. Sibẹsibẹ, eyi tun jẹ pipadanu data, botilẹjẹpe o kere pupọ, ti iwọ yoo ni lati fi sii.

O da, wọn jẹ alaihan patapata si oju. Labẹ apanirun (niwọn bi habrastorage ko le mu awọn faili nla), oluka le ṣe iṣiro iyatọ mejeeji nipasẹ oju ati kikankikan wọn, ti o gba nipasẹ iyokuro awọn iye ti paati ti o yipada lati atilẹba: atilẹba, pẹlu alaye inu, iyato (awọn duller awọ, awọn kere iyato ninu awọn Àkọsílẹ).

Dipo ti pinnu

Ṣiyesi gbogbo awọn iṣoro wọnyi, rira dirafu lile tabi ikojọpọ ohun gbogbo si awọsanma le dabi ojutu ti o rọrun pupọ si iṣoro naa. Ṣugbọn botilẹjẹpe a n gbe ni iru akoko iyalẹnu bayi, ko si awọn iṣeduro pe ọla yoo tun ṣee ṣe lati lọ si ori ayelujara ki o gbe gbogbo data afikun rẹ si ibikan. Tabi lọ si ile itaja ki o ra ara rẹ ni dirafu lile terabyte ẹgbẹrun miiran. Ṣugbọn o le nigbagbogbo lo awọn ile ti o wa tẹlẹ.

-> GitHub

orisun: www.habr.com

Fi ọrọìwòye kun