హార్డ్ డిస్క్ స్థలాన్ని ఆదా చేయడానికి ఒక వింత పద్ధతి గురించి

మరొక వినియోగదారు హార్డ్ డ్రైవ్‌కు కొత్త డేటా భాగాన్ని వ్రాయాలనుకుంటున్నారు, కానీ దీన్ని చేయడానికి అతనికి తగినంత ఖాళీ స్థలం లేదు. "ప్రతిదీ చాలా ముఖ్యమైనది మరియు అవసరమైనది" కాబట్టి నేను కూడా దేనినీ తొలగించాలనుకోవడం లేదు. మరియు దానితో మనం ఏమి చేయాలి?

ఈ సమస్య ఎవరికీ లేదు. మా హార్డ్ డ్రైవ్‌లలో టెరాబైట్‌ల సమాచారం ఉంది మరియు ఈ మొత్తం తగ్గదు. కానీ అది ఎంత ప్రత్యేకమైనది? చివరికి, అన్ని ఫైల్‌లు ఒక నిర్దిష్ట పొడవు యొక్క బిట్‌ల సెట్‌లు మరియు, చాలా మటుకు, కొత్తది ఇప్పటికే నిల్వ చేయబడిన దాని నుండి చాలా భిన్నంగా లేదు.

హార్డు డ్రైవులో ఇప్పటికే నిల్వ చేయబడిన సమాచార ముక్కల కోసం శోధించడం ఒక వైఫల్యం కాకపోతే, కనీసం సమర్థవంతమైన పని కాదు. మరోవైపు, తేడా తక్కువగా ఉంటే, మీరు దానిని కొద్దిగా సర్దుబాటు చేయవచ్చు ...

హార్డ్ డిస్క్ స్థలాన్ని ఆదా చేయడానికి ఒక వింత పద్ధతి గురించి

TL;DR - JPEG ఫైల్‌లను ఉపయోగించి డేటాను ఆప్టిమైజ్ చేసే వింత పద్ధతి గురించి మాట్లాడే రెండవ ప్రయత్నం, ఇప్పుడు మరింత అర్థమయ్యే రూపంలో ఉంది.

బిట్స్ మరియు తేడా గురించి

మీరు రెండు పూర్తిగా యాదృచ్ఛిక డేటా ముక్కలను తీసుకుంటే, అవి కలిగి ఉన్న బిట్‌లలో సగటున సగం సమానంగా ఉంటాయి. నిజానికి, ప్రతి జత ('00, 01, 10, 11′) కోసం సాధ్యమయ్యే లేఅవుట్‌లలో, సరిగ్గా సగం ఒకే విలువలను కలిగి ఉంటాయి, ఇక్కడ ప్రతిదీ చాలా సులభం.

అయితే, మనం కేవలం రెండు ఫైల్‌లను తీసుకొని, ఒకదానిని రెండవదానికి సరిపోతుంటే, వాటిలో ఒకదానిని మనం కోల్పోతాము. మేము మార్పులను సేవ్ చేస్తే, మేము కేవలం తిరిగి ఆవిష్కరిస్తాము డెల్టా ఎన్‌కోడింగ్, ఇది సాధారణంగా అదే ప్రయోజనాల కోసం ఉపయోగించబడనప్పటికీ, మేము లేకుండా సంపూర్ణంగా ఉనికిలో ఉంది. మేము చిన్న సీక్వెన్స్‌ను పెద్దదానిలో పొందుపరచడానికి ప్రయత్నించవచ్చు, అయినప్పటికీ మనం ప్రతిదానితో నిర్లక్ష్యంగా ఉపయోగిస్తే డేటా యొక్క క్లిష్టమైన విభాగాలను కోల్పోయే ప్రమాదం ఉంది.

ఏది మరియు దేని మధ్య తేడాను తొలగించవచ్చు? బాగా, అంటే, వినియోగదారు వ్రాసిన కొత్త ఫైల్ కేవలం బిట్‌ల క్రమం, దానితో మనం స్వయంగా ఏమీ చేయలేము. అప్పుడు మీరు హార్డ్ డ్రైవ్‌లో అటువంటి బిట్‌లను కనుగొనవలసి ఉంటుంది, అవి తేడాను నిల్వ చేయకుండా మార్చవచ్చు, తద్వారా మీరు తీవ్రమైన పరిణామాలు లేకుండా వారి నష్టాన్ని తట్టుకోగలరు. మరియు FS లోని ఫైల్‌ను మాత్రమే కాకుండా, దానిలోని కొన్ని తక్కువ సున్నితమైన సమాచారాన్ని మార్చడం అర్ధమే. కానీ ఏది మరియు ఎలా?

అమరిక పద్ధతులు

లాస్సీ కంప్రెస్డ్ ఫైల్స్ రెస్క్యూకి వస్తాయి. ఈ అన్ని jpegలు, mp3లు మరియు ఇతరాలు, లాస్సీ కంప్రెషన్ అయినప్పటికీ, సురక్షితంగా మార్చగల బిట్‌ల సమూహాన్ని కలిగి ఉంటాయి. ఎన్‌కోడింగ్ యొక్క వివిధ దశలలో వాటి భాగాలను అస్పష్టంగా సవరించే అధునాతన సాంకేతికతలను ఉపయోగించడం సాధ్యమవుతుంది. వేచి ఉండండి. అధునాతన టెక్నిక్‌లు... అస్పష్టమైన సవరణ... ఒక బిట్‌గా మరొకటి.. దాదాపు ఇలాగే ఉంటుంది స్టెగానోగ్రఫీ!

నిజానికి, ఒక సమాచారాన్ని మరొకదానికి పొందుపరచడం ఆమె పద్ధతులను గుర్తుకు తెస్తుంది. మానవ ఇంద్రియాలకు చేసిన మార్పుల యొక్క అస్పష్టత కూడా నన్ను ఆకట్టుకుంది. దారులు ఎక్కడెక్కడ వేరు చేయబడతాయో గోప్యంగా ఉంటుంది: వినియోగదారు తన హార్డ్ డ్రైవ్‌లో అదనపు సమాచారాన్ని నమోదు చేయడం ద్వారా మా పని అతనికి మాత్రమే హాని చేస్తుంది. మళ్లీ మరచిపోతాడు.

అందువల్ల, మనం వాటిని ఉపయోగించగలిగినప్పటికీ, మనం కొన్ని సవరణలు చేయాలి. ఆపై నేను ఇప్పటికే ఉన్న పద్ధతుల్లో ఒకటి మరియు సాధారణ ఫైల్ ఫార్మాట్ యొక్క ఉదాహరణను ఉపయోగించి వాటిని చెబుతాను మరియు చూపిస్తాను.

నక్కల గురించి

మీరు దీన్ని నిజంగా పిండితే, ఇది ప్రపంచంలోనే అత్యంత కుదించదగిన విషయం. మేము, వాస్తవానికి, JPEG ఫైళ్ళ గురించి మాట్లాడుతున్నాము. డేటాను పొందుపరచడానికి టన్నుల కొద్దీ సాధనాలు మరియు ఇప్పటికే ఉన్న పద్ధతులు మాత్రమే కాకుండా, ఇది ఈ గ్రహం మీద అత్యంత ప్రజాదరణ పొందిన గ్రాఫిక్స్ ఫార్మాట్.

హార్డ్ డిస్క్ స్థలాన్ని ఆదా చేయడానికి ఒక వింత పద్ధతి గురించి

అయినప్పటికీ, కుక్కల పెంపకంలో పాల్గొనకుండా ఉండటానికి, మీరు ఈ ఫార్మాట్ యొక్క ఫైల్‌లలో మీ కార్యాచరణ ఫీల్డ్‌ను పరిమితం చేయాలి. అధిక కుదింపు కారణంగా కనిపించే మోనోక్రోమ్ స్క్వేర్‌లను ఎవరూ ఇష్టపడరు, కాబట్టి మీరు ఇప్పటికే కంప్రెస్ చేయబడిన ఫైల్‌తో పని చేయడానికి మిమ్మల్ని మీరు పరిమితం చేసుకోవాలి, రీకోడింగ్‌ను నివారించడం. మరింత ప్రత్యేకంగా, పూర్ణాంక కోఎఫీషియంట్‌లతో, డేటా నష్టానికి బాధ్యత వహించే కార్యకలాపాల తర్వాత మిగిలి ఉంటుంది - DCT మరియు పరిమాణీకరణ, ఇది ఎన్‌కోడింగ్ స్కీమ్‌లో ఖచ్చితంగా ప్రదర్శించబడుతుంది (బామన్ నేషనల్ లైబ్రరీ యొక్క వికీకి ధన్యవాదాలు):
హార్డ్ డిస్క్ స్థలాన్ని ఆదా చేయడానికి ఒక వింత పద్ధతి గురించి

jpeg ఫైల్‌లను ఆప్టిమైజ్ చేయడానికి అనేక మార్గాలు ఉన్నాయి. లాస్‌లెస్ ఆప్టిమైజేషన్ ఉంది (jpegtran), ఆప్టిమైజేషన్ ఉంది "నష్టాలు లేవు“, ఇది వాస్తవానికి వేరే దోహదపడుతుంది, కానీ మేము వాటి గురించి పట్టించుకోము. అన్నింటికంటే, ఉచిత డిస్క్ స్థలాన్ని పెంచడానికి వినియోగదారు ఒక సమాచారాన్ని మరొకదానికి పొందుపరచడానికి సిద్ధంగా ఉంటే, అతను చాలా కాలం క్రితం తన చిత్రాలను ఆప్టిమైజ్ చేసాడు లేదా నాణ్యత కోల్పోతారనే భయంతో దీన్ని అస్సలు చేయకూడదు.

F5

అల్గారిథమ్‌ల యొక్క మొత్తం కుటుంబం ఈ పరిస్థితులకు సరిపోతుంది, ఇది మీకు మీరే పరిచయం చేసుకోవచ్చు ఈ మంచి ప్రదర్శనలో. వాటిలో అత్యంత అధునాతనమైనది అల్గోరిథం F5 ఆండ్రియాస్ వెస్ట్‌ఫెల్డ్ ద్వారా, బ్రైట్‌నెస్ కాంపోనెంట్ యొక్క కోఎఫీషియంట్స్‌తో పని చేస్తుంది, ఎందుకంటే మానవ కన్ను దాని మార్పులకు అతి తక్కువ సున్నితంగా ఉంటుంది. అంతేకాకుండా, ఇది మ్యాట్రిక్స్ ఎన్‌కోడింగ్ ఆధారంగా పొందుపరిచే సాంకేతికతను ఉపయోగిస్తుంది, అదే మొత్తంలో సమాచారాన్ని పొందుపరిచేటప్పుడు తక్కువ మార్పులు చేయడం సాధ్యపడుతుంది, ఉపయోగించిన కంటైనర్ పరిమాణం పెద్దది.

కొన్ని పరిస్థితులలో (అంటే ఎల్లప్పుడూ కాదు) కోఎఫీషియంట్స్ యొక్క సంపూర్ణ విలువను ఒకదానితో ఒకటి తగ్గించడానికి మార్పులు తమను తాము మరుగుపరుస్తాయి, ఇది మీ హార్డ్ డ్రైవ్‌లో డేటా నిల్వను ఆప్టిమైజ్ చేయడానికి F5ని ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది. పాయింట్ ఏమిటంటే, అటువంటి మార్పు తర్వాత గుణకం JPEGలోని విలువల గణాంక పంపిణీ కారణంగా హఫ్ఫ్‌మన్ ఎన్‌కోడింగ్ తర్వాత తక్కువ బిట్‌లను ఆక్రమిస్తుంది మరియు RLEని ఉపయోగించి వాటిని ఎన్‌కోడింగ్ చేసేటప్పుడు కొత్త సున్నాలు లాభాన్ని ఇస్తాయి.

గోప్యత (పాస్‌వర్డ్ పునర్వ్యవస్థీకరణ)కి బాధ్యత వహించే భాగాన్ని తొలగించడానికి అవసరమైన సవరణలు ఉడకబెట్టబడతాయి, ఇది వనరులు మరియు అమలు సమయాన్ని ఆదా చేస్తుంది మరియు ఒకేసారి అనేక ఫైల్‌లతో పనిచేయడానికి ఒక యంత్రాంగాన్ని జోడించడం. రీడర్ మరింత వివరంగా మార్పు ప్రక్రియపై ఆసక్తి చూపే అవకాశం లేదు, కాబట్టి అమలు యొక్క వివరణకు వెళ్దాం.

హైటెక్

ఈ విధానం ఎలా పని చేస్తుందో ప్రదర్శించడానికి, నేను ప్యూర్ సిలో పద్ధతిని అమలు చేసాను మరియు ఎగ్జిక్యూషన్ స్పీడ్ మరియు మెమరీ పరంగా అనేక ఆప్టిమైజేషన్‌లను చేసాను (DCT కంటే ముందే ఈ చిత్రాలు కుదింపు లేకుండా ఎంత బరువు ఉంటాయో మీరు ఊహించలేరు). లైబ్రరీల కలయికను ఉపయోగించి క్రాస్-ప్లాట్‌ఫారమ్ సాధించబడింది libjpeg, PCRE и tinydir, అందుకు మేము వారికి ధన్యవాదాలు తెలియజేస్తున్నాము. ఇవన్నీ 'మేక్' ద్వారా కలిసి ఉంటాయి, కాబట్టి Windows వినియోగదారులు మూల్యాంకనం కోసం తమ కోసం కొంత సిగ్విన్‌ను ఇన్‌స్టాల్ చేసుకోవాలనుకుంటున్నారు లేదా విజువల్ స్టూడియో మరియు లైబ్రరీలతో వారి స్వంతంగా వ్యవహరించాలి.

అమలు కన్సోల్ యుటిలిటీ మరియు లైబ్రరీ రూపంలో అందుబాటులో ఉంది. ఆసక్తి ఉన్నవారు గితుబ్‌లోని రిపోజిటరీలోని రీడ్‌మీలో రెండోదాన్ని ఉపయోగించడం గురించి మరింత తెలుసుకోవచ్చు, నేను పోస్ట్ చివరిలో జోడించే లింక్.

ఎలా ఉపయోగించాలి?

జాగ్రత్తగా. ఇచ్చిన రూట్ డైరెక్టరీలో సాధారణ వ్యక్తీకరణను ఉపయోగించి శోధించడం ద్వారా ప్యాకేజింగ్ కోసం ఉపయోగించే చిత్రాలు ఎంపిక చేయబడతాయి. పూర్తయిన తర్వాత, ఫైల్‌లను దాని సరిహద్దుల్లోకి తరలించడం, పేరు మార్చడం మరియు కాపీ చేయడం, ఫైల్ మరియు ఆపరేటింగ్ సిస్టమ్‌లను మార్చడం మొదలైనవి చేయవచ్చు. అయితే, మీరు చాలా జాగ్రత్తగా ఉండాలి మరియు తక్షణ కంటెంట్‌లను ఏ విధంగానూ మార్చకూడదు. ఒక బిట్ విలువను కూడా కోల్పోవడం వల్ల సమాచారాన్ని తిరిగి పొందడం అసాధ్యం.

పూర్తయిన తర్వాత, యుటిలిటీ ఉపయోగించిన చిత్రాల గురించి డేటాతో సహా అన్‌ప్యాక్ చేయడానికి అవసరమైన మొత్తం సమాచారాన్ని కలిగి ఉన్న ప్రత్యేక ఆర్కైవ్ ఫైల్‌ను వదిలివేస్తుంది. స్వతహాగా, ఇది రెండు కిలోబైట్ల బరువు ఉంటుంది మరియు ఆక్రమిత డిస్క్ స్థలంపై గణనీయమైన ప్రభావాన్ని చూపదు.

మీరు '-a' ఫ్లాగ్‌ని ఉపయోగించి సాధ్యమయ్యే సామర్థ్యాన్ని విశ్లేషించవచ్చు: './f5ar -a [శోధన ఫోల్డర్] [పర్ల్-అనుకూల సాధారణ వ్యక్తీకరణ]'. './f5ar -p [శోధన ఫోల్డర్] [పెర్ల్-అనుకూలమైన సాధారణ వ్యక్తీకరణ] [ప్యాక్ చేసిన ఫైల్] [ఆర్కైవ్ పేరు]' కమాండ్‌తో ప్యాకింగ్ చేయబడుతుంది మరియు './f5ar -u [ఆర్కైవ్ ఫైల్] [రికవర్ చేసిన ఫైల్ పేరు]తో అన్‌ప్యాక్ చేయడం జరుగుతుంది. ]'

పని ప్రదర్శన

పద్ధతి యొక్క ప్రభావాన్ని చూపడానికి, నేను సేవ నుండి 225 కుక్కల యొక్క పూర్తిగా ఉచిత ఫోటోల సేకరణను అప్‌లోడ్ చేసాను Unsplash మరియు పత్రాలలో రెండవ వాల్యూమ్ యొక్క 45 మీటర్ల పెద్ద పిడిఎఫ్ కనుగొనబడింది ఆర్ట్ ఆఫ్ ప్రోగ్రామింగ్ క్నూట.

క్రమం చాలా సులభం:

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

అభిమానుల కోసం స్క్రీన్‌షాట్‌లు

హార్డ్ డిస్క్ స్థలాన్ని ఆదా చేయడానికి ఒక వింత పద్ధతి గురించి

అన్‌ప్యాక్ చేయబడిన ఫైల్‌ని ఇంకా చదవవచ్చు మరియు చదవాలి:

హార్డ్ డిస్క్ స్థలాన్ని ఆదా చేయడానికి ఒక వింత పద్ధతి గురించి

మీరు చూడగలిగినట్లుగా, హార్డ్ డ్రైవ్‌లోని అసలు 633 + 36 == 669 మెగాబైట్ల డేటా నుండి, మేము మరింత ఆహ్లాదకరమైన 551కి వచ్చాము. అటువంటి రాడికల్ వ్యత్యాసం గుణకాల విలువలలో తగ్గుదల ద్వారా వివరించబడింది, ఇది వాటిపై ప్రభావం చూపుతుంది. తదుపరి లాస్‌లెస్ కంప్రెషన్: ఒక్కొక్కటిగా తగ్గించడం ద్వారా సులభంగా “ చివరి ఫైల్ నుండి రెండు బైట్‌లను కత్తిరించవచ్చు. అయినప్పటికీ, ఇది ఇప్పటికీ డేటా నష్టం, చాలా చిన్నది అయినప్పటికీ, మీరు భరించవలసి ఉంటుంది.

అదృష్టవశాత్తూ, అవి కంటికి పూర్తిగా కనిపించవు. స్పాయిలర్ కింద (హబ్రాస్టోరేజ్ పెద్ద ఫైల్‌లను నిర్వహించదు కాబట్టి), రీడర్ కన్ను మరియు వాటి తీవ్రత రెండింటి ద్వారా తేడాను అంచనా వేయవచ్చు, మార్చబడిన భాగం యొక్క విలువలను అసలు నుండి తీసివేయడం ద్వారా పొందవచ్చు: అసలు, లోపల సమాచారంతో, తేడా (రంగు మందంగా ఉంటుంది, బ్లాక్‌లో తేడా చిన్నది).

ముగింపుకు బదులుగా

ఈ ఇబ్బందులన్నింటినీ పరిగణనలోకి తీసుకుంటే, హార్డ్ డ్రైవ్‌ను కొనుగోలు చేయడం లేదా క్లౌడ్‌కు ప్రతిదీ అప్‌లోడ్ చేయడం సమస్యకు చాలా సరళమైన పరిష్కారంగా అనిపించవచ్చు. కానీ మనం ఇప్పుడు ఇంత అద్భుతమైన సమయంలో జీవిస్తున్నప్పటికీ, రేపు ఆన్‌లైన్‌కి వెళ్లి మీ అదనపు డేటా మొత్తాన్ని ఎక్కడైనా అప్‌లోడ్ చేయడం సాధ్యమవుతుందనే హామీలు లేవు. లేదా దుకాణానికి వెళ్లి మరో వెయ్యి టెరాబైట్ హార్డ్ డ్రైవ్ కొనుగోలు చేయండి. కానీ మీరు ఇప్పటికే ఉన్న ఇళ్లను ఎల్లప్పుడూ ఉపయోగించవచ్చు.

-> గ్యాలరీలు

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి