Created
September 24, 2012 10:02
-
-
Save adrienbrault/3775253 to your computer and use it in GitHub Desktop.
Script to reduce VM size before packaging for vagrant
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Credits to: | |
# - http://vstone.eu/reducing-vagrant-box-size/ | |
# - https://github.com/mitchellh/vagrant/issues/343 | |
aptitude -y purge ri | |
aptitude -y purge installation-report landscape-common wireless-tools wpasupplicant ubuntu-serverguide | |
aptitude -y purge python-dbus libnl1 python-smartpm python-twisted-core libiw30 | |
aptitude -y purge python-twisted-bin libdbus-glib-1-2 python-pexpect python-pycurl python-serial python-gobject python-pam python-openssl libffi5 | |
apt-get purge -y linux-image-3.0.0-12-generic-pae | |
# Remove APT cache | |
apt-get clean -y | |
apt-get autoclean -y | |
# Zero free space to aid VM compression | |
dd if=/dev/zero of=/EMPTY bs=1M | |
rm -f /EMPTY | |
# Remove bash history | |
unset HISTFILE | |
rm -f /root/.bash_history | |
rm -f /home/vagrant/.bash_history | |
# Cleanup log files | |
find /var/log -type f | while read f; do echo -ne '' > $f; done; | |
# Whiteout root | |
count=`df --sync -kP / | tail -n1 | awk -F ' ' '{print $4}'`; | |
let count-- | |
dd if=/dev/zero of=/tmp/whitespace bs=1024 count=$count; | |
rm /tmp/whitespace; | |
# Whiteout /boot | |
count=`df --sync -kP /boot | tail -n1 | awk -F ' ' '{print $4}'`; | |
let count-- | |
dd if=/dev/zero of=/boot/whitespace bs=1024 count=$count; | |
rm /boot/whitespace; | |
swappart=`cat /proc/swaps | tail -n1 | awk -F ' ' '{print $1}'` | |
swapoff $swappart; | |
dd if=/dev/zero of=$swappart; | |
mkswap $swappart; | |
swapon $swappart; |
What about replace let count--
by : $((count -= 1))
?
nah... just replace #!/bin/sh
to #!/bin/bash
works for me =]
thx a lot
Had to change the last block to
swappart=$(cat /proc/swaps | grep -v Filename | tail -n1 | awk -F ' ' '{print $1}')
if [ "$swappart" != "" ]; then
swapoff $swappart;
dd if=/dev/zero of=$swappart;
mkswap $swappart;
swapon $swappart;
fi
Otherwise a "Filename" file is created occupying the entire disk if the script is run twice
well this did nothing for me. I actually removed a bunch of large files but after running this script the resulting box size was GREATER! how in the hell does deleting file end up increasing the box size????
update: doing @evgeny-goldin's suggestion seems to have worked.
1.8gb went to 750mb so I'm not complaining.
I went from having 8GB image to 2.6GB, thanks!
How come the dd for swap has no bs nor count?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I'm on debian...
let: not found
?Also it seems like that this removes ruby..?