Einfaches Backup & Restore der installierten Packete (Ubuntu/Debian)

Posted by on 14 Sep 2008 | Tagged as: CLI, Debian, Ubuntu

Bisher habe ich immer ein Backup Script verwendet um meine “Lieblingspackete” wieder zu installieren. Dieses Script sieht etwa so aus:

#!/bin/bash
################ RESTORE SOURCES.LIST ###############
#cp -f backup_files/sources.list /etc/apt/sources.list
#cp -f backup_files/secring.gpg /etc/apt/secring.gpg
#cp -f backup_files/trustdb.gpg /etc/apt/trustdb.gpg
#cp -f backup_files/trusted.gpg /etc/apt/trusted.gpg
#####################################################
# Add Medibuntu
# wget -q http://medibuntu.sos-sts.com/repo/medibuntu-key.gpg -O- | sudo apt-key add -
# wget http://medibuntu.sos-sts.com/sources.list.d/feisty.list -O /etc/apt/sources.list.d/medibuntu.list
apt-get -y remove mozilla-thunderbird
apt-get update
apt-get -y upgrade
# Skype
apt-get -y install skype
# Java
apt-get -y install sun-java6-jre sun-java5-jre
# Postfix
apt-get -y install postfix
#KDE Appz
apt-get -y install kopete konversation konqueror k3b amarok krfb ktorrent
apt-get -y install kftpgrabber kate kontact kdepim-kio-plugins kgpg
apt-get -y install akregator gdb
# Burn Programs
apt-get -y install gnomebaker
# GnuPGP Key Management
apt-get -y install seahorse file-roller
# aMSN
apt-get -y install amsn
# IRSSI / OpenSSH
apt-get -y install irssi openssh-server
# GnuMP3d
# apt-get -y install gnump3d
# OTR
apt-get -y install python-glade-1.2 python-gtk-1.2
# VmWare
apt-get -y install linux-headers-`uname -r` build-essential xinetd
# Browsers
apt-get -y install kazehakase opera flashplugin-nonfree
# Codecs
apt-get -y install libdvdcss2 gstreamer0.10-ffmpeg gstreamer0.10-pitfdll gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse gxine libxine-main1 libxine-extracodecs ogle ogle-gui w32codecs mplayer
# VLC
apt-get -y install vlc
# Samba
apt-get -y install samba
# Midnight Commander
apt-get -y install mc
# UNRAR
apt-get -y install unrar
# GParted
apt-get -y install gparted
# CheckRootKit
apt-get -y install chkrootkit
# OpenOffice
apt-get -y install openoffice.org openoffice.org-gtk
# ImageMagic
apt-get -y install imagemagick
# Numlock & fonts
apt-get -y install numlockx msttcorefonts
# Timeserver
apt-get -y install ntp ntpdate
# various
apt-get -y install whois phpmyadmin mysql-server mysql-client libmysqlclient15-dev adesklets d4x googleearth htop traceroute libjack0.100.0-dev
# Restore other files
cp -f backup_files/sysinfo /usr/share/apps/konversation/scripts/sysinfo
cp -f backup_files/screenshot /usr/bin/screenshot

Das konnte ich dann einfach mit “sudo install.sh” starten resp. auf Debian ist kein “sudo” notwendig. Der -y switch hat dafür gesorgt, dass automatisch installiert wird und nicht zuerst noch alles bestätigt werden musste.

Zusätzlich habe ich mir dazu noch ein paar Kategorien gemacht, so dass die Manipulation der Packete einfacher ist. Auch die Reihenfolge spielt eine Rolle, so verlange Skype, Java und Postfix noch ein paar Benutzereingaben, also habe ich das ziemlich am Anfang hingestellt.

Damit erreiche ich eine fast automatische Installation aller von mir gewollten Packete.

Problem:

Das Problem liegt allerdings darin, dass ich entsprechend auch immer die Liste aktuell halten muss. D.h. wenn ich was neues installiere, dann muss ich das entsprechend auch wieder hinzufügen und – ich gebs ja zu – ich bin zwischendurch einfach zu faul dafür. Vorallem dann, wenn ich nur was ziehe um es mal zu testen, aber später dann doch länger beibehalte.

Lösung:

Mit folgendem kleinen Regex kann man sich bequem eine Liste aller installierten Pakete holen und in eine Textdatei speichern:

dpkg -l | awk '/^ii/ { print $2 }' > packages.txt

Damit werden als alle installierten Packe in der packages.txt aufgelistet und es sieht dann so aus:

acl
acpi
acpi-support
acpid
adduser
adept
adept-batch
adept-common
adept-installer
adept-manager
adept-notifier
adept-updater
aircrack-ng
akonadi-kde-kde4
akonadi-server
akregator
akregator-kde4
alsa-base
alsa-utils
amarok
amarok-kde4
amarok-xine
amsn
anacron
anon-proxy
apmd
app-install-data
apparmor
apparmor-utils
apport
apport-qt
apt
[...]

Vor einer Neuinstallation kann man also kurz mal die ganze Liste ziehen und es sich so anzeigen lassen, dann kann man sein Backupscript eventuell noch mit fehlenden Programmen ergänzen.

Wer allerdings sämtliche Pakete wieder installiet haben muss, der kann auch diesen Befehl hier verwenden:

dpkg -l | awk '/^ii/ { print $2 }' | tr '\n' ' ' > packages.txt

Damit wird der Zeilenumbruch nach jedem Packet aufgehoben. Jetzt nun auch noch die packages.txt sichern (vor der Neuinstallation). Nachher können dann entsprechend alle Packete wieder installiert werden mit folgendem Befehl:

sudo apt-get install `cat packages.txt`

Allerding müssen zuerst die entsprechenden Repos wieder hergestellt und upgedatet werden. Sonst gibts Fehlermeldungen.

Comments are closed.