Spara utrymme med UPX

0
173

Diskutrymme är billigt, men det finns fortfarande situationer där du vill frigöra utrymme. För mig, en av dem är att få den högsta av gratis Dropbox-konto som jag använder för att synkronisera mina ansökningar mellan arbete och hem. Hej, inte säga min sysadmin jag gör det, han skulle få en hjärtattack från den tunga tanken av ett virus bland mina tools collection.

Naturligtvis {zip/rar}ing allt är en no-go; ingen vill ha för att öppna ett arkiv innan man kan starta ett program. Så vad?

Ange UPX, referens packer för körbara filer. UPX komprimerar körbara filer (mestadels .exe .dll under Windows), men i motsatts till zip/rar/whatever, det håller dem körbara, också bevara sina egenskaper (ikon, version…). Allt detta på bekostnad av en helt osynlig prestanda hit när du startar programmet. Låter det bra? Låt oss komprimera allt körbar i detta Dropbox som är farligt nära att nå sitt 2GB gräns.

  1. Ladda ner UPX från SourceForge och extrahera den till <upxFolder>.
  2. Öppna en kommandotolk och bläddra till <upxFolder> (du kan hitta kommandotolken på Start > Tillbehör eller köra det via Windows+R, då “cmd”. Använd “cd Mappnamn” för att navigera i filsystemet).
  3. Kör upx.exe att ha en titt på tillgängliga alternativ. Jag kommer att använda -9 men du kan ändra detta (till exempel om du känner en prestanda hit på en gammal maskin –jag vet inte–), och -v för att få utförlig output. Nu, navigera till den mapp i ett program som du vill komprimera och köra din nybakat kommando:
    “<upxFolder>upx.exe” -9 -v *.exe *.dll
    (ersätt <upxFolder> adekvat sätt, och hålla citattecken runt sökvägen, eller de utrymmen som kommer att orsaka problem)
  4. Du kommer att se filer som är komprimerade, kompression, liksom enstaka “AlreadyPackedException: redan packat med UPX”, eller “CantPackException: .NET filer (win32/netto) är ännu inte stöds”, eller “IOException: read error: Invalid argument”. Dessa fel är allt OK, UPX bara meddelar att det vänstra filen orörd.

Woot, du har redan fått 50 MB genom att bara komprimera stora ol’Inkscape.

Naturligtvis vill du nu göra detta på ALLA de filer i en mapp. Men du är för lat, och perspektiv för att driva denna linje inuti hundratals undermappar lämnar dig dyster. Lycklig du, jag är lat också, så jag grävde Stack Overflow att sätta ihop ett manus som kommer att göra operationen rekursivt.

  1. Klistra in detta i en text fil (naturligtvis anpassa den främsta raden som vi gjorde innan) du kommer att byta namn till något som upxRecursive.bat
    för /r /d %%x i ( * ) (
    pushd “%%x”
    “<upxFolder>upx.exe” -9 -v *.exe *.dll
    popd
    )
    paus
  2. Flytta denna batch-filen i din Dropbox-mapp, starta det och se det magiska. Detta kommer att ta lång tid på en stor mapp fylld med körbara filer, men kommer på allvar slank det ner. I mitt fall sparade jag 400 MB (från 1,7 GB till 1,3 GB), lämnar mig med gott om utrymme för mer skit.

Sista anteckningar:

  • UPX har varit under utveckling under en lång tid och är berömt för sina extrema stabilitet och tillförlitlighet, men kan möjligen lämnar er med några exotiska körbara filer som inte kommer att köra efter komprimering. Jag personligen har aldrig slagit mig, men olyckor händer. I detta fall använda “<upxFolder>upx.exe” -d problematicFile.exe för att få en okomprimerad version. Observera att det inte kommer bli byte-identiska, om du vill kunna komma tillbaka till byte-identiska versioner, bör du lägga till –exakta växla vid komprimering tid.
    Förresten, folket på PortableApps.com pack all programvara som de släpper med UPX. Förvissad om dess tillförlitlighet?
  • Personer som är bekanta med win32/pe-format kommer att veta det .exe .dll-är inte dess enda giltigt tillägg. Den fullständiga listan är “.exe .dll .cpl .ocx .sys .scr .drv”. Dock rekommenderar jag inte att komprimera känsliga filer som kontrollpanelen tillägg eller driver filer, och detta är varför den linje jag föreslår att mål bara dll-och exe-filer. Komprimera VLC är OK eftersom du kan installera det på nytt om UPX slaktare. Komprimera kritisk programvara är det inte.
  • Jag är bara upprepa min tidigare poäng, men inte vill se arga kommentarer från människor som gör galna saker med detta. Igen, inte gör detta på alla C: – det -kommer – wreck ditt system. Komprimera filer när du verkligen behöver det, och inuti mappar som innehåller endast reinstallable ansökningar om saker går fel.
  • UPX är en multi-plattform. Min artikel fokuserar mycket på Windows, eftersom detta är den plattform där min användningsfall kommer från, men du kan naturligtvis justera denna idé/manus för Linux (plus att du förmodligen kommer att ha tillgång till en sundare skriptspråk än partiet).
  • EDIT: som påpekats av John T. Haller i kommentarerna, PortableApps erbjuder AppCompactor, ett grafiskt gränssnitt som bygger bland annat på UPX.

Ronan är en nörd och musiker som bor i Montreal. Han gillar att skrämma försiktig systemadministratörer med 2GB mappar fulla av falskt positiva och skriver om mjukvara, musik och livet på flygande fjäder.