Économiser de l’espace disque avec UPX

0
107

L’espace disque n’est pas cher, mais il existe encore des situations où vous souhaitez récupérer de l’espace. Pour moi, l’un d’eux est d’obtenir le maximum de la libre compte Dropbox-je utiliser pour synchroniser mes applications entre le travail et la maison. Hey, ne dis pas de mon sysadmin-je faire cela, il allait faire une crise cardiaque à partir de la pensée unique d’un virus parmi mes outils de collecte.

Bien sûr, {zip/rar}ing tout est un no-go; personne ne veut avoir à ouvrir une archive avant de pouvoir lancer une application. Et alors?

Entrez UPX, la référence packer pour les fichiers exécutables. UPX compresse les fichiers exécutables (la plupart du temps .exe et .dll sous Windows), mais contrairement à zip/rar/whatever, il les garde exécutable, tout en préservant leurs propriétés (icône, version…). Tout cela au prix d’une complètement imperceptible performances lors du démarrage de l’application. Ça sonne bien? Nous allons compresser tout exécutable dans cette Dropbox qui est dangereusement proche de sa limite de 2 go.

  1. Télécharger UPX à partir de SourceForge et l’extraire à <upxFolder>.
  2. Ouvrez une invite de commande et accédez à <upxFolder> (vous pouvez trouver l’invite de commande dans Démarrer > Accessoires ou de l’exécuter via Windows+R, puis “cmd”. Utilisez la commande “cd FolderName” pour naviguer dans le système de fichiers).
  3. Exécuter upx.exe d’avoir un regard sur les options disponibles. Je vais utiliser -9 mais vous pouvez l’ajuster (par exemple si vous ressentez un gain de performance sur une vieille machine –je n’ai pas–), et -v pour avoir des informations détaillées. Maintenant, accédez au dossier d’un programme que vous voulez compresser et exécuter votre fraîchement cuit à la commande:
    “<upxFolder>upx.exe” -9 -v *.exe *.dll
    (remplacez <upxFolder> de manière adéquate, et de garder les guillemets autour du chemin d’accès, ou des espaces de causer des problèmes)
  4. Vous verrez que les fichiers sont compressés, le taux de compression, ainsi que l’occasionnel “AlreadyPackedException: déjà emballé par UPX”, ou “CantPackException: .NET fichiers (win32/net) ne sont pas encore pris en charge”, ou “IOException: read error: argument non Valide”. Ces erreurs sont tous OK, UPX juste vous informe qu’il a quitté le fichier intact.

Woot, vous avez déjà gagné 50 MO par juste la compression grand ol’Inkscape.

Bien sûr, vous souhaitez désormais le faire sur TOUS les exécutables dans un dossier. Mais vous êtes paresseux, et le point de vue de l’exécution de cette ligne à l’intérieur des centaines de sous-dossiers vous laisse sombre. Vous avez de la chance, je suis trop paresseux, alors j’ai creusé un Débordement de Pile pour assembler un script qui va faire l’opération de manière récursive.

  1. Collez ceci dans un fichier texte (bien sûr, le réglage de la ligne principale, comme nous l’avons fait avant) vous permettra de renommer en quelque chose comme upxRecursive.chauve-souris
    pour /r /d %%x (*) do (
    pushd “%%x”
    “<upxFolder>upx.exe” -9 -v *.exe *.dll
    popd
    )
    pause
  2. Déplacez ce fichier de commandes à l’intérieur de votre dossier Dropbox, de le lancer et de voir la magie. Cela va prendre un certain temps sur un gros dossier rempli avec les fichiers exécutables, mais sérieusement mince vers le bas. Dans mon cas, je l’ai sauvé de 400 mo (contre 1,7 GO de 1,3 GO), me laissant avec beaucoup d’espace pour plus de la merde.

Notes finales:

  • UPX a été en développement pendant une longue période et est apprécié pour son extrême stabilité et la fiabilité, mais pourrait vous laisser avec quelques exotiques fichiers exécutables qui ne courent pas après la compression. J’ai personnellement jamais eu lieu pour moi, mais les accidents se produisent. Dans ce cas, utilisez “<upxFolder>upx.exe” -d problematicFile.exe pour obtenir une version non compressée. Remarque, il ne sera pas des octets identiques, si vous voulez être en mesure de revenir à des octets identiques versions, vous devez ajouter l’option –exacte de l’interrupteur au moment de la compression.
    En passant, les gens de chez PortableApps.com pack de tous les logiciels qu’ils ont communiqué avec UPX. Rassuré sur sa fiabilité?
  • Les personnes familières avec le win32/format pe le saurez .exe et .dll ne sont pas son seul les extensions valides. La liste complète est “.exe .dll .le cpl .ocx .sys .la scr .drv”. Cependant, je ne recommande pas de compression de fichiers sensibles comme des extensions du panneau de configuration ou les fichiers de pilote, et c’est pourquoi la ligne I de proposer des cibles uniquement les fichiers dll et exe. La compression VLC est OK parce que vous pouvez la réinstaller si UPX bouchers. La compression logiciels critiques ne l’est pas.
  • Je suis juste en répétant mon point précédent, mais ne veulent pas le voir en colère commentaires de gens à faire des choses folles avec cette. Encore une fois, ne le faites pas sur tous les C: ,- – épave de votre système. Compresser les fichiers exécutables lorsque vous en avez vraiment besoin, et à l’intérieur des dossiers ne contenant que des reinstallable applications si les choses tournent mal.
  • UPX est multi-plateforme. Mon article se concentre fortement sur Windows parce que c’est la plate-forme où mon cas d’utilisation vient, mais vous pouvez bien sûr adapter cette idée/script pour Linux (plus probablement vous aurez accès à un saner langage de script de traitement par lot).
  • EDIT: comme indiqué par John T. Haller dans les commentaires, PortableApps offre AppCompactor, une interface graphique qui s’appuie entre autres sur UPX.

Ronan est un geek et un musicien vivant à Montréal. Il aime effrayer méfier les administrateurs système, avec 2 go de dossiers plein de faux positifs et écrit à propos de logiciels, de la musique et de la vie au volant molehill.