Disko gogorrean lekua aurrezteko metodo bitxi bati buruz

Beste erabiltzaile batek datu berri bat idatzi nahi du disko gogorrean, baina ez du horretarako leku libre nahikorik. Nik ere ez dut ezer ezabatu nahi, "dena oso garrantzitsua eta beharrezkoa baita". Eta zer egin behar dugu horrekin?

Inork ez du arazo hau. Gure disko gogorretan terabyte-ko informazioa dago, eta kopuru hori ez da gutxitzeko joera. Baina nola berezia da? Azkenean, fitxategi guztiak luzera jakin bateko bit multzoak besterik ez dira eta, ziurrenik, berria ez da dagoeneko gordeta dagoenaren oso desberdina.

Argi dago disko gogorrean dagoeneko gordeta dauden informazio zatiak bilatzea, hutsegite bat ez bada, ez dela lan eraginkorra behintzat. Bestalde, aldea txikia bada, pixka bat egokitu dezakezu...

Disko gogorrean lekua aurrezteko metodo bitxi bati buruz

TL;DR - JPEG fitxategiak erabiliz datuak optimizatzeko metodo bitxi bati buruz hitz egiteko bigarren saiakera, orain forma ulergarriago batean.

Bit eta diferentziari buruz

Bi datu guztiz ausaz hartzen badituzu, batez beste bat datoz bat egiten duten biten erdiak. Izan ere, bikote bakoitzeko diseinu posibleen artean ('00, 01, 10, 11β€²), erdiek balio berdinak dituzte, dena erraza da hemen.

Baina, noski, bi fitxategi hartu eta bat bigarrenari egokitzen badiogu, haietako bat galduko dugu. Aldaketak gordetzen baditugu, berrasmatuko dugu delta kodeketa, gu gabe primeran existitzen dena, nahiz eta normalean helburu berberetarako erabiltzen ez den. Saia gaitezke sekuentzia txikiago bat handiago batean txertatzen, baina hala ere datu-segmentu kritikoak galtzeko arriskua dugu denarekin arduragabekeriaz erabiltzen baditugu.

Zeren eta zeren artean ezaba daiteke aldea? Tira, hau da, erabiltzaileak idatzitako fitxategi berri bat bit-segida bat besterik ez da, eta horrekin ezin dugu ezer egin berez. Orduan, disko gogorrean halako bit-ak aurkitu besterik ez duzu egin behar, aldea gorde beharrik gabe alda daitezkeen, ondorioz galera ondorio larririk gabe biziraun dezakezu. Eta zentzuzkoa da ez bakarrik FSko fitxategia aldatzea, baita horren barruan dagoen informazio ez hain sentikorra ere. Baina zein eta nola?

Egokitzeko metodoak

Galdutako fitxategi konprimituak erreskatatu egiten dira. Jpeg, mp3 eta beste hauek guztiek, konpresio galeratsua izan arren, segurtasunez alda daitezkeen bit mordoa dute. Posible da kodeketaren hainbat fasetan osagaiak oharkabean aldatzen dituzten teknika aurreratuak erabiltzea. Itxaron. Teknika aurreratuak... aldaketa hautemanezinak... pixka bat beste batean... ia antzekoa da esteganografia!

Izan ere, informazio bat beste batean txertatzeak bere metodoak gogorarazten ditu beste ezerk ez bezala. Era berean, txundituta nago giza zentzumenetan egindako aldaketen ikusezintasunak. Bideak desbideratzen diren tokian sekretupean dago: gure zeregina erabiltzaileak bere disko gogorrean informazio gehigarria sartzeari dagokio; kalte egingo dio soilik. Berriro ahaztuko du.

Horregatik, erabili ditzakegun arren, aldaketa batzuk egin behar ditugu. Eta gero esango eta erakutsiko ditut lehendik dauden metodoetako baten adibidea eta fitxategi formatu arrunta erabiliz.

Txakalei buruz

Benetan estutzen baduzu, munduko gauzarik konprimigarriena da. JPEG fitxategiei buruz ari gara, noski. Datuak bertan txertatzeko tresna eta metodo ugari ez ezik, planeta honetako formatu grafiko ezagunena da.

Disko gogorrean lekua aurrezteko metodo bitxi bati buruz

Hala ere, txakurren hazkuntzan ez aritzeko, zure jarduera-eremua formatu honetako fitxategietan mugatu behar duzu. Inori ez zaio gustatzen gehiegizko konpresioagatik agertzen diren karratu monokromoak; beraz, dagoeneko konprimitutako fitxategi batekin lan egitera mugatu behar zara. birkodetzea saihestuz. Zehatzago esanda, koefiziente osoekin, datuak galtzearen ardura duten eragiketen ondoren geratzen direnak - DCT eta kuantizazioa, kodeketa-eskeman ezin hobeto bistaratzen dena (Bauman National Library-ren wikiari esker):
Disko gogorrean lekua aurrezteko metodo bitxi bati buruz

Jpeg fitxategiak optimizatzeko metodo posible asko daude. Galerarik gabeko optimizazioa dago (jpegtran), optimizazioa dago "galerarik ezβ€œ, egia esan, beste zerbait laguntzen dute, baina ez zaigu axola. Azken finean, erabiltzailea prest badago informazio bat beste batean txertatzeko disko libreko espazioa handitzeko, orduan duela denbora asko optimizatu zituen bere irudiak, edo ez du hori egin nahi kalitatea galtzeko beldurrez.

F5

Algoritmo-familia oso bat egokitzen da baldintza horietara, eta horiek ezagutu ditzakezu aurkezpen on honetan. Horietatik aurreratuena algoritmoa da F5 Andreas Westfeld-ek, distira-osagaiaren koefizienteekin lan eginez, gizakiaren begia baita haren aldaketekiko sentikortasun gutxien duena. Gainera, kodeketa matrizialean oinarritutako txertatze-teknika bat erabiltzen du, eta horri esker, informazio kopuru bera txertatzean aldaketa gutxiago egitea ahalbidetzen du, erabilitako edukiontzia zenbat eta tamaina handiagoa izan.

Aldaketak beraiek baldintza jakin batzuetan koefizienteen balio absolutua bat murrizten dute (hau da, ez beti), eta horri esker, F5 erabil dezakezu zure disko gogorrean datuak biltegiratzea optimizatzeko. Kontua da aldaketa horren ondoren koefizienteak ziurrenik bit gutxiago okupatuko dituela Huffmanen kodeketaren ondoren JPEG-en balioen banaketa estatistikoaren ondorioz, eta zero berriek irabazia emango dute RLE erabiliz kodetzean.

Beharrezko aldaketak sekretuaren ardura duen zatia ezabatzea (pasahitza berrantolatzea), baliabideak eta exekuzio-denbora aurrezten dituena, eta aldi berean fitxategi askorekin lan egiteko mekanismo bat gehitzea dakar. Irakurleari nekez interesatuko zaio aldaketa-prozesua xehetasun gehiagorekin, beraz, aurrera gaitezen ezarpenaren deskribapen batera.

Goi teknologia

Ikuspegi honek nola funtzionatzen duen erakusteko, metodoa C hutsean inplementatu nuen eta hainbat optimizazio egin nituen bai exekuzio abiadurari bai memoriari dagokionez (ez duzu imajinatu irudi hauek zenbat pisu duten konpresiorik gabe, DCT baino lehen ere). Plataforma gurutzatua liburutegien konbinazioa erabiliz lortzen da libjpeg, PCRE ΠΈ txiki-txikia, horregatik eskerrak ematen dizkiegu. Hori guztia 'make'-k biltzen du, beraz, Windows-eko erabiltzaileek Cygwin batzuk instalatu nahi dituzte beren kabuz ebaluatzeko, edo Visual Studio eta liburutegiekin beren kabuz landu nahi dituzte.

Inplementazioa kontsola erabilgarritasun eta liburutegi moduan eskuragarri dago. Interesa dutenek azken hau erabiltzeari buruz gehiago jakin dezakete Github-eko biltegian dagoen readme-n, zeinari mezuaren amaieran erantsiko dudan esteka.

Nola erabili?

Arretaz. Paketatzeko erabilitako irudiak aukeratzen dira emandako erro-direktorioan adierazpen erregular baten bidez bilatuz. Amaitzean, fitxategiak mugitu, izena aldatu eta nahierara kopiatu daitezke bere mugen barruan, fitxategiak eta sistema eragileak aldatu, etab. Hala ere, kontu handiz ibili behar duzu eta ez duzu berehalako edukia inola ere aldatu. Bit baten balioa galtzeak ezinezkoa izan dezake informazioa berreskuratzea.

Amaitzean, erabilgarritasunak artxibo-fitxategi berezi bat uzten du, deskonprimitzeko beharrezkoa den informazio guztia duena, erabilitako irudiei buruzko datuak barne. Berez, pare bat kilobyte pisatzen ditu eta ez du eragin handirik okupatutako diskoko espazioan.

'-a' bandera erabiliz azter dezakezu ahalmen posiblea: './f5ar -a [bilaketa karpeta] [Perl-ekin bateragarria den adierazpen erregularra]'. Paketatzea './f5ar -p [bilaketa-karpeta] [Perl-ekin bateragarria den adierazpen erregular] [paketatutako fitxategia] [artxiboaren izena]' komandoarekin egiten da, eta './f5ar -u [artxibo-fitxategia] [berreskuratutako fitxategiaren izena]-rekin desegitea. ]' .

Lanaren erakustaldia

Metodoaren eraginkortasuna erakusteko, zerbitzuko txakurren 225 argazki guztiz doako bilduma bat igo nuen. Unsplash eta dokumentuetan aurkitu zuen bigarren liburukiko 45 metroko pdf handi bat Programazioaren Artea Knuta.

Sekuentzia nahiko erraza da:

$ 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/

Zaleentzako pantaila-argazkiak

Disko gogorrean lekua aurrezteko metodo bitxi bati buruz

Despaketatutako fitxategia irakur daiteke eta irakurri behar da:

Disko gogorrean lekua aurrezteko metodo bitxi bati buruz

Ikus dezakezunez, disko gogorrean dauden jatorrizko 633 + 36 == 669 megabyte datuetatik, 551 atseginagoetara iritsi ginen. Halako desberdintasun erradikal bat koefizienteen balioen jaitsierarekin azaltzen da, eta horrek eragiten du. ondorengo galerarik gabeko konpresioa: banan-banan murriztea erraz β€œerraz moztu daiteke azken fitxategitik pare bat byte. Hala ere, hau oraindik datu-galera da, nahiz eta oso txikia izan, jasan beharko duzuna.

Zorionez, guztiz ikusezinak dira begientzat. Spoiler-aren azpian (habrastorage-k ezin dituenez fitxategi handiak kudeatu), irakurleak aldea ebaluatu dezake begien eta haien intentsitatearen arabera, aldatutako osagaiaren balioak jatorrizkotik kenduz lortuta: jatorrizkoa, barruan informazioa duela, aldea (zenbat eta kolore oparoagoa izan, orduan eta aldea txikiagoa izango da blokean).

Horren ordez Ondorio baten

Zailtasun horiek guztiak kontuan hartuta, disko gogor bat erostea edo dena hodeira igotzea arazoari irtenbide askoz errazagoa iruditzen zaio. Baina orain hain garai zoragarrian bizi garen arren, ez dago bermerik bihar oraindik sarean sartu eta zure datu gehigarri guztiak nonbait kargatu ahal izango direnik. Edo joan dendara eta erosi beste mila terabyte-ko disko gogor. Baina beti erabil ditzakezu lehendik dauden etxeak.

-> GitHub

Iturria: www.habr.com

Gehitu iruzkin berria