Kuhusu njia ya ajabu ya kuokoa nafasi ya diski ngumu

Mtumiaji mwingine anataka kuandika kipande kipya cha data kwenye gari ngumu, lakini hana nafasi ya kutosha ya kufanya hivyo. Pia sitaki kufuta chochote, kwani "kila kitu ni muhimu sana na ni muhimu." Na tunapaswa kufanya nini nayo?

Hakuna mwenye tatizo hili. Kuna terabytes ya habari kwenye anatoa zetu ngumu, na kiasi hiki hakielekei kupungua. Lakini ni ya kipekee kiasi gani? Mwishoni, faili zote ni seti tu za bits za urefu fulani na, uwezekano mkubwa, mpya sio tofauti sana na ile ambayo tayari imehifadhiwa.

Ni wazi kwamba kutafuta vipande vya habari tayari kuhifadhiwa kwenye gari ngumu ni, ikiwa sio kushindwa, basi angalau si kazi yenye ufanisi. Kwa upande mwingine, ikiwa tofauti ni ndogo, basi unaweza kurekebisha kidogo ...

Kuhusu njia ya ajabu ya kuokoa nafasi ya diski ngumu

TL;DR - jaribio la pili la kuzungumza juu ya njia ya kushangaza ya kuongeza data kwa kutumia faili za JPEG, sasa katika fomu inayoeleweka zaidi.

Kuhusu bits na tofauti

Ikiwa unachukua vipande viwili vya data bila mpangilio, basi kwa wastani nusu ya bits zilizomo sanjari. Hakika, kati ya mipangilio inayowezekana kwa kila jozi ('00, 01, 10, 11β€²), hasa nusu ina maadili sawa, kila kitu ni rahisi hapa.

Lakini kwa kweli, ikiwa tunachukua faili mbili tu na kufaa moja hadi ya pili, basi tutapoteza moja yao. Ikiwa tutahifadhi mabadiliko, tutaanzisha upya usimbaji wa delta, ambayo ipo vizuri bila sisi, ingawa haitumiwi kwa madhumuni sawa. Tunaweza kujaribu kupachika mfuatano mdogo kuwa mkubwa zaidi, lakini hata hivyo tunaweza kupoteza sehemu muhimu za data ikiwa tutaitumia bila kujali katika kila kitu.

Kati ya nini na nini basi tofauti inaweza kuondolewa? Kweli, ambayo ni, faili mpya iliyoandikwa na mtumiaji ni mlolongo wa bits, ambayo hatuwezi kufanya chochote peke yake. Kisha unahitaji tu kupata bits vile kwenye gari ngumu ili waweze kubadilishwa bila kuhifadhi tofauti, ili uweze kuishi hasara yao bila madhara makubwa. Na inaeleweka kubadilisha sio faili tu kwenye FS yenyewe, lakini habari nyeti sana ndani yake. Lakini ni yupi na jinsi gani?

Mbinu za kufaa

Faili zilizobanwa zilizopotea huja kuwaokoa. jpegs hizi zote, mp3 na zingine, ingawa mgandamizo wa hasara, zina rundo la bits ambazo zinaweza kubadilishwa kwa usalama. Inawezekana kutumia mbinu za hali ya juu ambazo hurekebisha vipengele vyao kwa njia isiyoonekana katika hatua mbalimbali za usimbaji. Subiri. Mbinu za hali ya juu... urekebishaji usioonekana... moja hadi nyingine... ni kama steganografia!

Kwa kweli, kupachika habari moja hadi nyingine ni ukumbusho wa njia zake kama kitu kingine chochote. Pia ninavutiwa na kutoonekana kwa mabadiliko yaliyofanywa kwa hisi za binadamu. Ambapo njia zinatofautiana ni kwa usiri: jukumu letu linakuja kwa mtumiaji kuingiza maelezo ya ziada kwenye diski yake kuu; itamdhuru tu. Atasahau tena.

Kwa hivyo, ingawa tunaweza kuzitumia, tunahitaji kufanya marekebisho kadhaa. Na kisha nitawaambia na kuwaonyesha kwa kutumia mfano wa mojawapo ya mbinu zilizopo na muundo wa faili wa kawaida.

Kuhusu mbweha

Ikiwa kweli utaipunguza, ni kitu kinachoweza kubanwa zaidi ulimwenguni. Kwa kweli, tunazungumza juu ya faili za JPEG. Sio tu kwamba kuna tani za zana na mbinu zilizopo za kupachika data ndani yake, lakini ni umbizo la picha maarufu zaidi kwenye sayari hii.

Kuhusu njia ya ajabu ya kuokoa nafasi ya diski ngumu

Hata hivyo, ili usijihusishe na ufugaji wa mbwa, unahitaji kupunguza uwanja wako wa shughuli katika faili za muundo huu. Hakuna mtu anapenda miraba ya monochrome inayoonekana kwa sababu ya mgandamizo mwingi, kwa hivyo unahitaji kujizuia kufanya kazi na faili iliyoshinikizwa tayari, kuepuka kuweka kumbukumbu. Hasa zaidi, pamoja na coefficients kamili, ambazo hubakia baada ya utendakazi kuwajibika kwa upotezaji wa data - DCT na ujanibishaji, ambao unaonyeshwa kikamilifu katika mpango wa usimbaji (shukrani kwa wiki ya Maktaba ya Kitaifa ya Bauman):
Kuhusu njia ya ajabu ya kuokoa nafasi ya diski ngumu

Kuna njia nyingi zinazowezekana za kuboresha faili za jpeg. Kuna uboreshaji usio na hasara (jpegtran), kuna uboreshaji "hakuna hasara", ambayo kwa kweli huchangia kitu kingine, lakini hatujali juu yao. Baada ya yote, ikiwa mtumiaji yuko tayari kupachika habari moja hadi nyingine ili kuongeza nafasi ya bure ya diski, basi aliboresha picha zake muda mrefu uliopita, au hataki kufanya hivyo kwa hofu ya kupoteza ubora.

F5

Familia nzima ya algorithms inafaa masharti haya, ambayo unaweza kujijulisha nayo katika uwasilishaji huu mzuri. Ya juu zaidi kati yao ni algorithm F5 na Andreas Westfeld, ikifanya kazi na mgawo wa sehemu ya mwangaza, kwa kuwa jicho la mwanadamu ndilo nyeti sana kwa mabadiliko yake. Zaidi ya hayo, hutumia mbinu ya kupachika kulingana na usimbaji wa matrix, ambayo inafanya uwezekano wa kufanya mabadiliko machache wakati wa kupachika kiasi sawa cha habari, ukubwa wa chombo kinachotumiwa.

Mabadiliko yenyewe hupungua hadi kupunguza thamani kamili ya coefficients kwa moja chini ya hali fulani (yaani, si mara zote), ambayo inakuwezesha kutumia F5 ili kuboresha hifadhi ya data kwenye gari lako ngumu. Jambo ni kwamba mgawo baada ya mabadiliko kama haya uwezekano mkubwa utachukua bits chache baada ya usimbaji wa Huffman kwa sababu ya usambazaji wa takwimu wa maadili katika JPEG, na sufuri mpya zitaleta faida wakati wa kuzisimba kwa kutumia RLE.

Marekebisho muhimu yanapungua hadi kuondoa sehemu inayohusika na usiri (upangaji upya wa nenosiri), ambayo huokoa rasilimali na wakati wa utekelezaji, na kuongeza utaratibu wa kufanya kazi na faili nyingi badala ya moja kwa wakati mmoja. Msomaji hawezi kuwa na nia ya mchakato wa mabadiliko kwa undani zaidi, basi hebu tuendelee kwenye maelezo ya utekelezaji.

Teknolojia ya juu

Ili kuonyesha jinsi mbinu hii inavyofanya kazi, nilitekeleza njia hiyo kwa C safi na kutekeleza uboreshaji kadhaa kwa suala la kasi ya utekelezaji na kumbukumbu (huwezi kufikiria ni uzito gani wa picha hizi bila kukandamizwa, hata kabla ya DCT). Jukwaa-tofauti linalopatikana kwa kutumia mchanganyiko wa maktaba libjpeg, pcre ΠΈ vidogo, ambayo tunawashukuru. Haya yote yanawekwa pamoja na 'tengeneza', kwa hivyo watumiaji wa Windows wanataka kujisakinisha baadhi ya Cygwin kwa ajili ya kutathminiwa, au kushughulika na Visual Studio na maktaba peke yao.

Utekelezaji unapatikana kwa namna ya matumizi ya console na maktaba. Wale wanaovutiwa wanaweza kujua zaidi juu ya kutumia hii ya mwisho kwenye usomaji kwenye hazina kwenye Github, kiunga ambacho nitaambatisha mwishoni mwa chapisho.

Jinsi ya kutumia?

Kwa uangalifu. Picha zinazotumiwa kwa upakiaji huchaguliwa kwa kutafuta kwa kutumia usemi wa kawaida katika saraka ya mizizi iliyotolewa. Baada ya kukamilika, faili zinaweza kuhamishwa, kubadilishwa jina na kunakiliwa kwa hiari ndani ya mipaka yake, kubadilisha faili na mifumo ya uendeshaji, nk. Hata hivyo, unapaswa kuwa mwangalifu sana na usibadilishe yaliyomo mara moja kwa njia yoyote. Kupoteza thamani hata kidogo kunaweza kufanya kuwa haiwezekani kurejesha habari.

Baada ya kukamilika, matumizi huacha faili maalum ya kumbukumbu iliyo na taarifa zote muhimu kwa kufuta, ikiwa ni pamoja na data kuhusu picha zilizotumiwa. Kwa yenyewe, ina uzito wa kilobytes kadhaa na haina athari kubwa kwenye nafasi ya diski iliyochukuliwa.

Unaweza kuchanganua uwezo unaowezekana kwa kutumia bendera ya '-a': './f5ar -a [folda ya utafutaji] [ usemi wa kawaida unaoendana na Perl]'. Ufungashaji hufanywa kwa amri './f5ar -p [folda ya utaftaji] [ usemi wa kawaida unaolingana na Perl] [faili iliyopakiwa] [jina la kumbukumbu]', na kufunguliwa kwa './f5ar -u [faili la kumbukumbu] [jina la faili lililorejeshwa ]'.

Maonyesho ya kazi

Ili kuonyesha ufanisi wa njia hiyo, nilipakia mkusanyiko wa picha 225 za bure za mbwa kutoka kwa huduma. Unsplash na kupatikana katika hati pdf kubwa ya mita 45 ya juzuu ya pili Sanaa ya Kuandaa Knuta.

Mlolongo ni rahisi sana:

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

Picha za skrini kwa mashabiki

Kuhusu njia ya ajabu ya kuokoa nafasi ya diski ngumu

Faili ambayo haijapakiwa inaweza na bado inapaswa kusomwa:

Kuhusu njia ya ajabu ya kuokoa nafasi ya diski ngumu

Kama unaweza kuona, kutoka kwa asili ya 633 + 36 == 669 megabytes ya data kwenye gari ngumu, tulikuja kwa kupendeza zaidi 551. Tofauti kubwa kama hiyo inaelezewa na kupungua kwa maadili ya coefficients, ambayo huathiri yao. ukandamizaji usio na hasara unaofuata: kupunguza moja baada ya nyingine kunaweza " kukata baiti kadhaa kutoka kwa faili ya mwisho. Walakini, hii bado ni upotezaji wa data, ingawa ni ndogo sana, ambayo itabidi uvumilie.

Kwa bahati nzuri, hazionekani kabisa kwa jicho. Chini ya mharibifu (kwani habrastorage haiwezi kushughulikia faili kubwa), msomaji anaweza kutathmini tofauti kwa jicho na ukubwa wao, kupatikana kwa kutoa maadili ya sehemu iliyobadilishwa kutoka kwa asili: asili, na habari ndani, tofauti (rangi duller, tofauti ndogo katika block).

Badala ya hitimisho

Kuzingatia matatizo haya yote, kununua gari ngumu au kupakia kila kitu kwenye wingu inaweza kuonekana kuwa suluhisho rahisi zaidi kwa tatizo. Lakini ingawa tunaishi katika wakati mzuri sana sasa, hakuna hakikisho kwamba kesho bado itawezekana kwenda mtandaoni na kupakia data yako yote ya ziada mahali fulani. Au nenda kwenye duka na ujinunulie gari nyingine ngumu ya terabyte elfu. Lakini unaweza kutumia nyumba zilizopo kila wakati.

-> GitHub

Chanzo: mapenzi.com

Kuongeza maoni