Mahitungod sa usa ka katingad-an nga pamaagi alang sa pagtipig sa wanang sa hard disk

Ang laing tiggamit gusto nga magsulat og bag-ong piraso sa datos sa hard drive, apan wala siyay igong libre nga luna aron mahimo kini. Dili usab nako gusto nga tangtangon ang bisan unsang butang, tungod kay "ang tanan hinungdanon ug kinahanglan." Ug unsay angay natong buhaton niini?

Walay usa nga adunay niini nga problema. Adunay mga terabyte nga impormasyon sa among mga hard drive, ug kini nga kantidad dili mous-os. Apan unsa kini ka talagsaon? Sa katapusan, ang tanan nga mga file mga set lang sa mga piraso sa usa ka piho nga gitas-on ug, lagmit, ang bag-o dili kaayo lahi sa usa nga gitipigan na.

Klaro nga ang pagpangita alang sa mga piraso sa impormasyon nga gitipigan na sa usa ka hard drive, kung dili usa ka kapakyasan, nan labing menos dili usa ka epektibo nga buluhaton. Sa laing bahin, kung gamay ra ang kalainan, mahimo nimong usbon kini gamay ...

Mahitungod sa usa ka katingad-an nga pamaagi alang sa pagtipig sa wanang sa hard disk

TL; DR - ang ikaduha nga pagsulay sa paghisgot bahin sa usa ka katingad-an nga pamaagi sa pag-optimize sa datos gamit ang mga JPEG file, karon sa mas masabtan nga porma.

Mahitungod sa mga tipik ug kalainan

Kung magkuha ka og duha ka bug-os nga random nga mga piraso sa datos, nan sa aberids nga katunga sa mga piraso nga anaa niini magkatakdo. Sa tinuud, taliwala sa posible nga mga layout alang sa matag pares ('00, 01, 10, 11β€²), eksakto nga katunga adunay parehas nga kantidad, ang tanan yano dinhi.

Apan siyempre, kung magkuha lang kita og duha ka mga file ug mohaum sa usa sa ikaduha, nan mawala ang usa niini. Kung gitipigan namon ang mga pagbag-o, magbag-o lang kami pag-encode sa delta, nga anaa sa hingpit nga maayo nga wala kita, bisan tuod kini dili kasagaran gigamit alang sa sama nga mga katuyoan. Mahimo natong sulayan ang pag-embed sa usa ka mas gamay nga han-ay ngadto sa usa ka mas dako, apan bisan pa niana kita adunay risgo nga mawad-an sa mga kritikal nga bahin sa datos kon gamiton nato kini nga walay pagtagad sa tanan.

Taliwala sa unsa ug unsa unya ang mahimo nga mawala ang kalainan? Aw, kana mao, ang usa ka bag-ong file nga gisulat sa tiggamit usa ra ka han-ay sa mga tipik, diin dili kami makahimo bisan unsa sa iyang kaugalingon. Unya kinahanglan nimo nga makit-an ang ingon nga mga piraso sa hard drive nga mahimo silang mabag-o nga dili kinahanglan nga tipigan ang kalainan, aron mabuhi ka sa ilang pagkawala nga wala’y grabe nga mga sangputanan. Ug makatarunganon nga usbon dili lang ang file sa FS mismo, apan ang pipila nga dili kaayo sensitibo nga kasayuran sa sulod niini. Apan hain ug sa unsang paagi?

Mga pamaagi sa pagpahiangay

Ang mga nawala nga gi-compress nga mga file moabut aron sa pagluwas. Ang tanan nga kini nga mga jpeg, mp3 ug uban pa, bisan kung nawala ang kompresyon, adunay daghang mga piraso nga luwas nga mabag-o. Posible ang paggamit sa mga advanced nga teknik nga dili mahibal-an nga nagbag-o sa ilang mga sangkap sa lainlaing mga yugto sa pag-encode. Hulat. Advanced nga mga teknik... dili mamatikdan nga pagbag-o... usa ka gamay ngadto sa lain... kini halos sama steganography!

Sa tinuud, ang pagsulud sa usa ka kasayuran sa lain nagpahinumdom sa iyang mga pamaagi nga wala’y lain. Nakadayeg usab ako sa pagkadili mamatikdan sa mga pagbag-o nga gihimo sa mga igbalati sa tawo. Kung diin ang mga agianan magkalainlain naa sa sekreto: ang among buluhaton moabut sa tiggamit nga magbutang dugang nga kasayuran sa iyang hard drive; makadaot ra kini kaniya. Makalimot na pud siya.

Busa, bisag magamit nato kini, kinahanglang maghimo kitag pipila ka kausaban. Ug unya akong isulti ug ipakita kanila gamit ang panig-ingnan sa usa sa mga naa na nga pamaagi ug usa ka sagad nga format sa file.

Mahitungod sa mga irong ihalas

Kung pugson gyud nimo kini, kini ang labing compressible nga butang sa kalibutan. Siyempre, naghisgot kami bahin sa mga file nga JPEG. Dili lamang adunay tonelada nga mga himan ug kasamtangan nga mga pamaagi alang sa pag-embed sa datos niini, apan kini ang pinakapopular nga format sa mga graphic niini nga planeta.

Mahitungod sa usa ka katingad-an nga pamaagi alang sa pagtipig sa wanang sa hard disk

Bisan pa, aron dili moapil sa pagpasanay sa iro, kinahanglan nimo nga limitahan ang imong natad sa kalihokan sa mga file sa kini nga format. Walay usa nga ganahan sa monochrome nga mga kwadro nga makita tungod sa sobra nga compression, mao nga kinahanglan nimo nga limitahan ang imong kaugalingon sa pagtrabaho sa usa ka na-compress nga file, paglikay sa recoding. Labaw nga espesipiko, nga adunay mga integer coefficients, nga nagpabilin human sa mga operasyon nga responsable sa pagkawala sa datos - DCT ug quantization, nga hingpit nga gipakita sa encoding scheme (salamat sa wiki sa Bauman National Library):
Mahitungod sa usa ka katingad-an nga pamaagi alang sa pagtipig sa wanang sa hard disk

Adunay daghang posible nga mga pamaagi sa pag-optimize sa jpeg file. Adunay lossless optimization (jpegtran), adunay optimization "walay kapildihan", nga sa tinuud nag-amot ug lain pa, apan wala kami magtagad kanila. Pagkahuman, kung ang tiggamit andam nga mag-embed sa usa ka kasayuran ngadto sa lain aron madugangan ang libre nga wanang sa disk, nan iyang gi-optimize ang iyang mga imahe sa dugay na nga panahon, o dili gusto nga buhaton kini tungod sa kahadlok nga mawala ang kalidad.

F5

Ang usa ka tibuuk nga pamilya sa mga algorithm mohaum niini nga mga kondisyon, nga mahimo nimong pamilyar sa imong kaugalingon niining maayong presentasyon. Ang labing abante kanila mao ang algorithm F5 ni Andreas Westfeld, nga nagtrabaho uban ang mga coefficient sa bahin sa kahayag, tungod kay ang mata sa tawo mao ang labing gamay nga sensitibo sa mga pagbag-o niini. Dugang pa, naggamit kini og teknik sa pag-embed base sa pag-encode sa matrix, nga nagpaposible sa paghimo og mas gamay nga mga pagbag-o kung gi-embed ang parehas nga kantidad sa impormasyon, mas dako ang gidak-on sa sudlanan nga gigamit.

Ang mga pagbag-o mismo nagpabukal sa pagkunhod sa hingpit nga kantidad sa mga coefficient sa usa sa ilawom sa pipila nga mga kondisyon (nga mao, dili kanunay), nga nagtugot kanimo sa paggamit sa F5 aron ma-optimize ang pagtipig sa datos sa imong hard drive. Ang punto mao nga ang koepisyent pagkahuman sa ingon nga pagbag-o lagmit nga mag-okupar sa labi ka gamay nga mga piraso pagkahuman sa pag-encode sa Huffman tungod sa pag-apod-apod sa istatistika sa mga kantidad sa JPEG, ug ang mga bag-ong mga zero maghatag usa ka ganansya kung gi-encode kini gamit ang RLE.

Ang gikinahanglan nga mga pagbag-o nagsugod sa pagwagtang sa bahin nga responsable sa sekreto (pag-usab sa password), nga makatipig sa mga kahinguhaan ug oras sa pagpatuman, ug pagdugang usa ka mekanismo sa pagtrabaho sa daghang mga file imbis nga usa sa usa ka higayon. Ang magbabasa dili tingali interesado sa proseso sa pagbag-o sa mas detalyado, busa magpadayon kita sa usa ka paghulagway sa pagpatuman.

Taas nga teknolohiya

Aron ipakita kung giunsa kini nga pamaagi molihok, gipatuman nako ang pamaagi sa lunsay nga C ug gihimo ang daghang mga pag-optimize pareho sa mga termino sa katulin sa pagpatuman ug memorya (dili nimo mahanduraw kung unsa ang gibug-aton sa kini nga mga litrato nga wala’y compression, bisan sa wala pa ang DCT). Ang cross-platform nga nakab-ot gamit ang kombinasyon sa mga librarya libjpeg, pcre ΠΈ tinydir, diin kami nagpasalamat kanila. Kining tanan gihiusa pinaagi sa 'paghimo', mao nga ang mga tiggamit sa Windows gusto nga mag-instalar sa pipila ka Cygwin alang sa ilang kaugalingon alang sa pagtimbang-timbang, o makig-atubang sa Visual Studio ug mga librarya sa ilang kaugalingon.

Ang pagpatuman magamit sa porma sa usa ka console utility ug librarya. Kadtong interesado makakat-on og dugang mahitungod sa paggamit sa naulahi sa readme sa repository sa Github, ang link nga akong i-attach sa katapusan sa post.

Unsaon paggamit?

Pag-amping. Ang mga imahe nga gigamit alang sa pagputos gipili pinaagi sa pagpangita gamit ang usa ka regular nga ekspresyon sa gihatag nga direktoryo sa ugat. Pagkahuman, ang mga file mahimong ibalhin, ilisan ug kopyahon sa gusto sa sulod sa mga utlanan niini, usba ang file ug operating system, ug uban pa. Bisan pa, kinahanglan ka mag-amping pag-ayo ug dili usbon ang diha-diha nga sulud sa bisan unsang paagi. Ang pagkawala sa bili sa bisan usa ka gamay makahimo nga imposible sa pagbawi sa impormasyon.

Pagkahuman, ang utility nagbilin usa ka espesyal nga file sa archive nga adunay tanan nga kasayuran nga gikinahanglan alang sa pag-unpack, lakip ang datos bahin sa mga imahe nga gigamit. Sa iyang kaugalingon, kini motimbang ug mga usa ka pares nga kilobytes ug walay bisan unsang mahinungdanong epekto sa giokupar nga disk space.

Mahimo nimong analisahon ang posible nga kapasidad gamit ang '-a' flag: './f5ar -a [search folder] [Perl-compatible nga regular nga ekspresyon]'. Ang pag-pack gihimo gamit ang command './f5ar -p [search folder] [Perl-compatible regular expression] [packed file] [archive name]', ug pag-unpack gamit ang './f5ar -u [archive file] [recovered file name] ]' .

Pagpakita sa trabaho

Aron ipakita ang pagka-epektibo sa pamaagi, nag-upload ako usa ka koleksyon sa 225 nga hingpit nga libre nga mga litrato sa mga iro gikan sa serbisyo. Unsplash ug nakit-an sa mga dokumento ang usa ka dako nga pdf nga 45 metros sa ikaduhang volume Art sa Programming Knuta.

Ang pagkasunod-sunod yano ra:

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

Mga screenshot para sa mga fans

Mahitungod sa usa ka katingad-an nga pamaagi alang sa pagtipig sa wanang sa hard disk

Ang wala maputos nga file mahimo ug kinahanglan gihapon nga basahon:

Mahitungod sa usa ka katingad-an nga pamaagi alang sa pagtipig sa wanang sa hard disk

Sama sa imong nakita, gikan sa orihinal nga 633 + 36 == 669 megabytes nga datos sa hard drive, nakaabut kami sa labi ka makapahimuot nga 551. Ang ingon nga usa ka radikal nga kalainan gipatin-aw sa pagkunhod sa mga kantidad sa mga coefficients, nga nakaapekto sa ilang sunod-sunod nga lossless compression: ang pagkunhod sa usa sa usa lang dali nga " makaputol sa usa ka pares nga bytes gikan sa katapusan nga file. Bisan pa, kini usa pa ka pagkawala sa datos, bisan kung gamay ra kaayo, nga kinahanglan nimo nga antuson.

Maayo na lang, sila hingpit nga dili makita sa mata. Ubos sa spoiler (tungod kay ang habrastorage dili makadumala sa dagkong mga file), ang magbabasa makahimo sa pagtimbang-timbang sa kalainan sa mata ug sa ilang intensity, nga nakuha pinaagi sa pagkunhod sa mga bili sa nausab nga sangkap gikan sa orihinal: ang orihinal, uban sa impormasyon sa sulod, ang kalainan (mas duller ang kolor, mas gamay ang kalainan sa block).

Kay sa usa ka konklusyon

Sa pagkonsiderar sa tanan niini nga mga kalisud, ang pagpalit sa usa ka hard drive o pag-upload sa tanan sa panganod ingon og usa ka labi ka yano nga solusyon sa problema. Apan bisan kung nagpuyo kami sa ingon ka nindot nga panahon karon, wala’y garantiya nga ugma posible pa nga mag-online ug ma-upload ang tanan nimong dugang nga datos sa usa ka lugar. O adto sa tindahan ug pagpalit sa imong kaugalingon og laing libo ka terabyte nga hard drive. Apan mahimo nimo kanunay nga gamiton ang kasamtangan nga mga balay.

-> GitHub

Source: www.habr.com

Idugang sa usa ka comment