Ynglŷn â dull rhyfedd ar gyfer arbed lle ar y ddisg galed

Mae defnyddiwr arall eisiau ysgrifennu darn newydd o ddata i'r gyriant caled, ond nid oes ganddo ddigon o le rhydd i wneud hyn. Nid wyf ychwaith am ddileu unrhyw beth, gan fod “popeth yn bwysig iawn ac yn angenrheidiol.” A beth ddylem ni ei wneud ag ef?

Nid oes gan neb y broblem hon. Mae terabytes o wybodaeth ar ein gyriannau caled, ac nid yw'r swm hwn yn tueddu i leihau. Ond pa mor unigryw ydyw? Yn y diwedd, dim ond setiau o ddarnau o hyd penodol yw pob ffeil ac, yn fwyaf tebygol, nid yw'r un newydd yn llawer gwahanol i'r un sydd eisoes wedi'i storio.

Mae’n amlwg nad yw chwilio am ddarnau o wybodaeth sydd eisoes wedi’u storio ar yriant caled, os nad yn fethiant, yn dasg effeithiol o leiaf. Ar y llaw arall, os yw'r gwahaniaeth yn fach, yna gallwch chi ei addasu ychydig ...

Ynglŷn â dull rhyfedd ar gyfer arbed lle ar y ddisg galed

TL; DR - yr ail ymgais i siarad am ddull rhyfedd o optimeiddio data gan ddefnyddio ffeiliau JPEG, sydd bellach ar ffurf fwy dealladwy.

Ynglŷn â darnau a gwahaniaeth

Os cymerwch ddau ddarn o ddata cwbl ar hap, yna ar gyfartaledd mae hanner y darnau sydd ynddynt yn cyd-daro. Yn wir, ymhlith y cynlluniau posibl ar gyfer pob pâr ('00, 01, 10, 11′), mae gan union hanner yr un gwerthoedd, mae popeth yn syml yma.

Ond wrth gwrs, os byddwn yn cymryd dwy ffeil yn unig ac yn ffitio un i'r ail, yna byddwn yn colli un ohonynt. Os byddwn yn arbed y newidiadau, byddwn yn ailddyfeisio amgodio delta, sy'n bodoli'n berffaith dda hebom ni, er nad yw'n cael ei ddefnyddio i'r un dibenion fel arfer. Gallwn geisio gwreiddio dilyniant llai mewn un mwy, ond er hynny rydym mewn perygl o golli segmentau hanfodol o ddata os byddwn yn ei ddefnyddio'n ddi-hid gyda phopeth.

Rhwng beth a beth felly y gellir dileu'r gwahaniaeth? Wel, hynny yw, dim ond dilyniant o ddarnau yw ffeil newydd a ysgrifennwyd gan y defnyddiwr, na allwn wneud unrhyw beth ar ei ben ei hun. Yna mae angen i chi ddod o hyd i ddarnau o'r fath ar y gyriant caled fel y gellir eu newid heb orfod storio'r gwahaniaeth, fel y gallwch oroesi eu colled heb ganlyniadau difrifol. Ac mae'n gwneud synnwyr newid nid yn unig y ffeil ar yr FS ei hun, ond rhywfaint o wybodaeth lai sensitif y tu mewn iddi. Ond pa un a sut?

Dulliau gosod

Daw ffeiliau cywasgedig colledig i'r adwy. Mae'r holl jpegs, mp3s ac eraill hyn, er eu bod yn gywasgu colledig, yn cynnwys llawer o ddarnau y gellir eu newid yn ddiogel. Mae'n bosibl defnyddio technegau uwch sy'n addasu eu cydrannau'n ddiarwybod ar wahanol gamau o'r amgodio. Arhoswch. Technegau uwch... addasiadau anganfyddadwy... un darn i'r llall... mae bron yn debyg steganograffeg!

Yn wir, mae gwreiddio un wybodaeth mewn gwybodaeth arall yn ein hatgoffa o'i dulliau fel dim arall. Mae amlygrwydd y newidiadau a wnaed i'r synhwyrau dynol wedi creu argraff arnaf hefyd. Lle mae’r llwybrau’n ymwahanu yn gyfrinachol: mae ein tasg ni’n dibynnu ar y defnyddiwr yn rhoi gwybodaeth ychwanegol ar ei yriant caled; dim ond ei niweidio fydd hynny. Bydd yn anghofio eto.

Felly, er y gallwn eu defnyddio, mae angen inni wneud rhai addasiadau. Ac yna byddaf yn dweud wrthynt ac yn eu dangos gan ddefnyddio enghraifft un o'r dulliau presennol a fformat ffeil cyffredin.

Am jackals

Os ydych chi wir yn ei wasgu, dyma'r peth mwyaf cywasgadwy yn y byd. Rydym ni, wrth gwrs, yn sôn am ffeiliau JPEG. Nid yn unig y mae yna dunelli o offer a dulliau presennol ar gyfer ymgorffori data ynddo, ond dyma'r fformat graffeg mwyaf poblogaidd ar y blaned hon.

Ynglŷn â dull rhyfedd ar gyfer arbed lle ar y ddisg galed

Fodd bynnag, er mwyn peidio â magu cŵn, mae angen i chi gyfyngu ar eich maes gweithgaredd mewn ffeiliau o'r fformat hwn. Nid oes neb yn hoffi sgwariau unlliw sy'n ymddangos oherwydd cywasgu gormodol, felly mae angen i chi gyfyngu'ch hun i weithio gyda ffeil sydd eisoes wedi'i chywasgu, osgoi cofnodi. Yn fwy penodol, gyda chyfanrifau cyfernodau, sy'n parhau ar ôl gweithrediadau sy'n gyfrifol am golli data - DCT a meintioli, sy'n cael ei arddangos yn berffaith yn y cynllun amgodio (diolch i wiki Llyfrgell Genedlaethol Bauman):
Ynglŷn â dull rhyfedd ar gyfer arbed lle ar y ddisg galed

Mae yna lawer o ddulliau posibl ar gyfer optimeiddio ffeiliau jpeg. Mae yna optimeiddio di-golled (jpegtran), mae yna optimeiddio "dim colled“, sydd mewn gwirionedd yn cyfrannu rhywbeth arall, ond nid ydym yn poeni amdanynt. Wedi'r cyfan, os yw'r defnyddiwr yn barod i fewnosod un wybodaeth i mewn i un arall er mwyn cynyddu gofod disg am ddim, yna fe wnaeth optimeiddio ei ddelweddau amser maith yn ôl, neu nid yw am wneud hyn o gwbl rhag ofn colli ansawdd.

F5

Mae teulu cyfan o algorithmau yn cyd-fynd â'r amodau hyn, y gallwch chi ymgyfarwyddo â nhw yn y cyflwyniad da hwn. Y mwyaf datblygedig ohonynt yw'r algorithm F5 gan Andreas Westfeld, gan weithio gyda chyfernodau'r gydran disgleirdeb, gan mai'r llygad dynol yw'r lleiaf sensitif i'w newidiadau. Ar ben hynny, mae'n defnyddio techneg ymgorffori yn seiliedig ar amgodio matrics, sy'n ei gwneud hi'n bosibl gwneud llai o newidiadau wrth fewnosod yr un faint o wybodaeth, po fwyaf yw maint y cynhwysydd a ddefnyddir.

Mae'r newidiadau eu hunain yn berwi i lawr i leihau gwerth absoliwt y cyfernodau gan un o dan amodau penodol (hynny yw, nid bob amser), sy'n eich galluogi i ddefnyddio F5 i optimeiddio storio data ar eich gyriant caled. Y pwynt yw y bydd y cyfernod ar ôl newid o'r fath yn fwyaf tebygol o feddiannu llai o ddarnau ar ôl amgodio Huffman oherwydd dosbarthiad ystadegol gwerthoedd yn JPEG, a bydd y seroau newydd yn rhoi enillion wrth eu hamgodio gan ddefnyddio RLE.

Mae'r addasiadau angenrheidiol yn deillio o ddileu'r rhan sy'n gyfrifol am gyfrinachedd (aildrefnu cyfrinair), sy'n arbed adnoddau ac amser gweithredu, ac ychwanegu mecanwaith ar gyfer gweithio gyda llawer o ffeiliau yn lle un ar y tro. Mae'n annhebygol y bydd gan y darllenydd ddiddordeb yn y broses newid yn fwy manwl, felly gadewch i ni symud ymlaen at ddisgrifiad o'r gweithrediad.

Uwch-dechnoleg

Er mwyn dangos sut mae'r dull hwn yn gweithio, gweithredais y dull yn C pur a chyflawnais nifer o optimeiddiadau o ran cyflymder gweithredu a chof (ni allwch ddychmygu faint mae'r lluniau hyn yn eu pwyso heb gywasgu, hyd yn oed cyn DCT). Cyflawnwyd traws-lwyfan gan ddefnyddio cyfuniad o lyfrgelloedd libjpeg, pcre и tinydir, yr ydym yn diolch iddynt. Mae hyn i gyd yn cael ei roi at ei gilydd gan 'gwneud', felly mae defnyddwyr Windows eisiau gosod rhywfaint o Cygwin drostynt eu hunain i'w gwerthuso, neu ddelio â Visual Studio a llyfrgelloedd ar eu pen eu hunain.

Mae'r gweithrediad ar gael ar ffurf cyfleustodau consol a llyfrgell. Gall y rhai sydd â diddordeb ddarganfod mwy am ddefnyddio'r olaf yn y readme yn yr ystorfa ar Github, y ddolen y byddaf yn ei hatodi ar ddiwedd y post.

Sut i ddefnyddio?

Yn ofalus. Dewisir y delweddau a ddefnyddir ar gyfer pecynnu trwy chwilio gan ddefnyddio mynegiant rheolaidd yn y cyfeiriadur gwraidd a roddwyd. Ar ôl eu cwblhau, gellir symud, ailenwi a chopïo ffeiliau yn ôl ewyllys o fewn ei ffiniau, newid systemau ffeiliau a gweithredu, ac ati. Fodd bynnag, dylech fod yn hynod ofalus a pheidio â newid y cynnwys uniongyrchol mewn unrhyw ffordd. Gall colli gwerth hyd yn oed un did ei gwneud hi'n amhosibl adennill gwybodaeth.

Ar ôl ei gwblhau, mae'r cyfleustodau'n gadael ffeil archif arbennig sy'n cynnwys yr holl wybodaeth angenrheidiol ar gyfer dadbacio, gan gynnwys data am y delweddau a ddefnyddiwyd. Ar ei ben ei hun, mae'n pwyso tua cwpl o kilobytes ac nid yw'n cael unrhyw effaith sylweddol ar y gofod disg a feddiannir.

Gallwch ddadansoddi'r cynhwysedd posibl gan ddefnyddio'r faner '-a': './f5ar -a [ffolder chwilio] [mynegiant rheolaidd Perl-compatible]'. Mae pacio yn cael ei wneud gyda'r gorchymyn './f5ar -p [ffolder chwilio] [mynegiant rheolaidd sy'n gydnaws â Perl] [ffeil wedi'i phacio] [enw'r archif]', a'i ddadbacio gyda './f5ar -u [ffeil archif] [enw ffeil wedi'i adennill] ]'.

Arddangosiad o waith

I ddangos effeithiolrwydd y dull, uwchlwythais gasgliad o 225 o luniau rhad ac am ddim o gŵn o'r gwasanaeth Unsplash a chafwyd yn y dogfennau pdf mawr o 45 metr o'r ail gyfrol Celf Rhaglennu Knuta.

Mae'r dilyniant yn eithaf syml:

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

Sgrinluniau ar gyfer cefnogwyr

Ynglŷn â dull rhyfedd ar gyfer arbed lle ar y ddisg galed

Gellir darllen y ffeil sydd heb ei phacio, a dylid ei darllen o hyd:

Ynglŷn â dull rhyfedd ar gyfer arbed lle ar y ddisg galed

Fel y gwelwch, o'r 633 + 36 == 669 megabeit gwreiddiol o ddata ar y gyriant caled, daethom i fwy dymunol 551. Mae gwahaniaeth mor radical yn cael ei esbonio gan y gostyngiad yng ngwerthoedd y cyfernodau, sy'n effeithio ar eu cywasgiad di-golled dilynol: gall lleihau fesul un yn hawdd “ dorri cwpl o beit i ffwrdd o'r ffeil derfynol. Fodd bynnag, mae hwn yn dal i fod yn golled data, er yn un fach iawn, y bydd yn rhaid i chi ei oddef.

Yn ffodus, maent yn gwbl anweledig i'r llygad. O dan y sbwyliwr (gan na all habrastorage drin ffeiliau mawr), gall y darllenydd werthuso'r gwahaniaeth yn ôl llygad a'u dwyster, a geir trwy dynnu gwerthoedd y gydran wedi'i newid o'r gwreiddiol: y gwreiddiol, gyda gwybodaeth y tu mewn, y gwahaniaeth (po waethaf yw'r lliw, y lleiaf yw'r gwahaniaeth yn y bloc).

Yn hytrach na i gasgliad

O ystyried yr holl anawsterau hyn, gall prynu gyriant caled neu uwchlwytho popeth i'r cwmwl ymddangos fel ateb llawer symlach i'r broblem. Ond er ein bod ni'n byw mewn cyfnod mor wych nawr, nid oes unrhyw sicrwydd y bydd hi'n dal yn bosibl mynd ar-lein a llwytho'ch holl ddata ychwanegol yn rhywle yfory. Neu ewch i'r siop a phrynu gyriant caled mil terabyte arall i chi'ch hun. Ond gallwch chi bob amser ddefnyddio tai presennol.

-> GitHub

Ffynhonnell: hab.com

Ychwanegu sylw