Spare diskplass med UPX

0
156

Diskplass er billig, men fortsatt er det situasjoner hvor du ønsker å frigjøre plass. For meg, en av dem er å få maksimalt gratis Dropbox-kontoen jeg bruker til å synkronisere mine programmer mellom arbeid og hjem. Hei, ikke si min sysadmin-jeg gjør dette, han ville få et hjerteinfarkt fra den eneste tanken på et virus blant mine verktøy samlingen.

Selvfølgelig {zip/rar}ing alt er en no-go; ingen ønsker å måtte åpne et arkiv før de blir i stand til å starte et program. Hva så?

Skriv inn UPX referanse-packer for kjørbare filer. UPX komprimerer kjørbare filer (for det meste .exe-filen og .dll-filen i Windows), men frå zip/rar/uansett, det holder dem kjørbar, også beholde sine egenskaper (ikon, versjon…). Alt dette på bekostning av en helt umerkelig ytelse hit når du starter programmet. Høres bra ut? La oss komprimere alt kjørbar i denne Dropbox som er farlig nær å nå sine 2GB grensen.

  1. Last ned UPX fra SourceForge, og pakk den ut til <upxFolder>.
  2. Åpne en ledetekst, og bla til <upxFolder> (du kan finne ledeteksten i Start – > Tilbehør eller kjøre det via Windows+R, deretter “cmd”. Bruk “cd Mappenavn” for å navigere i filsystemet).
  3. Kjøre upx.exe for å ta en titt på de tilgjengelige alternativene. Jeg vil bruke -9, men du kan justere denne (for eksempel hvis du føler en ytelse traff på en gammel maskin –jeg vet ikke–), og -v hvis du vil ha detaljert utgang. Nå, navigerer du til mappen med et program du ønsker å komprimere og kjør den nybakte kommando:
    “<upxFolder>upx.exe” -9 -v *.exe -*.dll
    (bytt ut <upxFolder> tilstrekkelig, og holde anførselstegn rundt banen, eller områder vil føre til problemer)
  4. Du vil se filene komprimeres, komprimering, samt sporadiske “AlreadyPackedException: allerede pakket UPX”, eller “CantPackException: .NET-filer (win32/net) er ennå ikke støttes”, eller “IOException: read error: Ugyldig argument”. Disse feilene er OK, UPX bare varsler deg om at det venstre filen urørt.

Woot, har du allerede fått 50MB bare ved å komprimere store ol’Inkscape.

Selvfølgelig du nå ønsker å gjøre dette på ALLE kjørbare filer i en mappe. Men du er lat, og perspektivet til kjører denne linjen inne i hundrevis av undermapper etterlater deg trist. Heldig du, jeg er lat, så jeg gravde stakkoverflyt å sette sammen et skript som vil gjøre operasjonen med undermapper.

  1. Lim inn dette i en tekst-fil (selvfølgelig justere den hovedlinjen som vi gjorde før) du vil gi nytt navn til noe som upxRecursive.bat
    for /r /d %%x i ( * ) (
    pushd “%%x”
    “<upxFolder>upx.exe” -9 -v *.exe -*.dll
    popd
    )
    pause
  2. Flytte denne batch fil i Dropbox-mappen, starte den og se magien. Dette vil ta lang tid i en stor mappe fylt med kjørbare filer, men vil seriøst slank ned. I mitt tilfelle, jeg har lagret 400 MB (fra 1,7 GB 1,3 GB), etterlot meg med god plass for mer dritt.

Avsluttende merknader:

  • UPX har vært under utvikling i lang tid, og er hyllet for sin ekstrem stabilitet og pålitelighet, men kunne kanskje forlate deg med noen eksotiske kjørbare filer som ikke kan kjøres etter komprimering. Jeg personlig har aldri skjedd med meg, men ulykker skjer. I dette tilfellet bruker du “<upxFolder>upx.exe” -d problematicFile.exe for å få en ukryptert versjon. Merk at det ikke vil være byte-identiske, hvis du ønsker å være i stand til å komme tilbake til byte-identiske versjoner, bør du legge –eksakt slå på komprimering tid.
    Forresten, folk på PortableApps.com pack all programvaren de slipper med UPX. Beroliget om sin pålitelighet?
  • De som er kjent med win32/pe-format vil vite det .exe-filen og .dll-er ikke det bare gyldig utvidelser. Den fullstendige listen er “.exe .- dll-fil .cpl .ocx .sys .scr .drv”. Men, jeg anbefaler ikke å komprimere sensitive filer som kontrollpanel utvidelser eller driver filer, og dette er grunnen til at linje jeg foreslår at du bare målretter mot dll-og exe-filer. Komprimering av VLC er OK fordi du kan installere den på nytt hvis UPX slaktere det. Komprimering av kritisk programvare er ikke.
  • Jeg bare gjentar min forrige punkt, men ikke ønsker å se sinte kommentarer fra folk gjør gale ting med dette. Igjen, ikke gjør dette på alle C: ,- vil – vraket systemet. Komprimere kjørbare filer når du virkelig trenger det, og inne i mapper som inneholder bare reinstallable programmer hvis ting går galt.
  • UPX er multi-plattform. Min artikkel fokuserer tungt på Windows fordi dette er den plattformen hvor min bruk tilfelle kommer fra, men du kan selvfølgelig justere denne ideen/script for Linux (pluss at du vil sannsynligvis ha tilgang til en mer fornuftig scripting språk enn batch).
  • EDIT: som påpekt av John T. Haller i kommentarfeltet, PortableApps tilbyr AppCompactor, en grafisk frontend som baserer seg blant annet på UPX.

Ronan er en geek og musiker som bor i Montreal. Han liker å skremme skeptisk sysadmins med 2GB mapper fulle av falske positive og skriver om programvare, musikk og liv på fly molehill.