Defjam121
8/23/2017 - 1:17 PM

Skripte

Skripte

#!/bin/sh
# Macht einen Screenshot mit Scrot, lädt ihn auf Dropbox hoch, erzeugt einen Direktlink und kopiert diesen in die Zwischenablage
# © 2014 Andreas Bielawski (http://wiidatabase.de/, https://github.com/Brawl345)
# Benötigt wird der "Dropbox-Uploader" von https://github.com/andreafabrizi/Dropbox-Uploader, welcher mit einem einfachen "curl "https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh" geholt werden kann. Dieser muss einmalig aufgerufen werden und alle Einstellungen vorgenommen werden. Erzeuge dann einen Symlink vom dropbox_uploader.sh in /usr/local/bin und nenne diese "dropbox_uploader"
# Die App sollte VOLLEN DROPBOX-ZUGRIFF haben.
#
# Optionen:
# -s: Auswählen eines Bereiches
# -u: Screenshot des aktuellen Fensters machen (nutzt scrot -ub für den Rahmen)
# --help: Hilfe anzeigen

# Setze Variablen
dbfolder="Bilder/Bildschirmfotos" # Verzeichnis, in das die Bilder auf Dropbox hochgeladen werden
scrotdir="$HOME/Bilder/Bildschirmfotos" # Das Verzeichnis, in dem die Bilder lokal gespeichert werden
scrotname="Bilschirmfoto vom `date +%Y-%m-%d` `date +%T`.png" # Name des Bildes

# Prüfe, ob User eine Option gesetzt hat
if [ "$1" = "-s" ]; then
      scrot -s "$scrotdir/$scrotname"
  	   if [ ! -f "$scrotdir/$scrotname" ];
    	   then
    	   	echo "Vorgang wurde von User abgebrochen"
    	   	exit 0
    	   fi
   else
if [ "$1" = "-u" ]; then
      scrot -ub "$scrotdir/$scrotname"
  	   if [ ! -f "$scrotdir/$scrotname" ];
    	   then
    	   	echo "Vorgang wurde von User abgebrochen"
    	   	exit 0
    	   fi
      else
if [ "$1" = "--help" ]; then
      echo "Screenshot To Dropbox by Andreas Bielawski"
      echo "Benutzung : ./screenshot [OPTIONEN]"
      echo "  Internetverbindung benötigt. Ohne gibt es lustige Nebenwirkungen!"
      echo "  Du musst dir den Dropbox-Uploader von"
      echo "  https://github.com/andreafabrizi/Dropbox-Uploader"
      echo "  laden und einen Systemlink in /usr/local/bin mit dem Namen"
      echo "  'dropbox_uploader' erstellen!"
      echo ""
      echo "	Keine Option	Den gesamten Bildschirm aufnehmen"
      echo "	-s		Einen frei wählbaren Bereich aufnehmen"
      echo "	-u		Das aktuelle Fenster aufnehmen"
      echo ""
      echo "<http://wiidatabase.de/>"
      exit
         else
      scrot "$scrotdir/$scrotname"
  	   if [ ! -f "$scrotdir/$scrotname" ];
    	   then
    	   	echo "Vorgang wurde von User abgebrochen"
    	   	exit 0
    	   fi
     fi
     fi
     fi

# 1 Sekunde Wartezeit, damit die Benachrichtigung nicht mit auf dem Screenshot ist.
sleep 1

# Sende Benachrichtigung
cd "$scrotdir"
notify-send -t 3000 -i /usr/share/icons/gnome/32x32/status/info.png "Screenshot" "...wird hochgeladen" 

# Uploade den Screenshot
dropbox_uploader upload "$scrotname" "$dbfolder/$scrotname"

# Teile den Screenshot, nehme den Link...
URL=$(dropbox_uploader share "$dbfolder/$scrotname" | awk '{print $4}')

# ...und ersetze "www.dropbox.com" durch "dl.dropboxusercontent.com" und füge diesen in die Zwischenablage ein. Bei dl.dropboxusercontent.com wird das Bild direkt angezeigt.
echo "$URL" > /tmp/dropboxlink
sed s/www.dropbox/dl.dropboxusercontent/g /tmp/dropboxlink | xclip -selection clipboard
notify-send -t 8000 -i /usr/share/icons/gnome/32x32/status/info.png "Screenshot" "Link in Zwischenablage kopiert" 
exit 0
#!/bin/sh
# Macht einen Screenshot mit Scrot, lädt ihn auf Dropbox hoch, erzeugt einen Direktlink und kopiert diesen in die Zwischenablage
# © 2014 Andreas Bielawski (http://wiidatabase.de/, https://github.com/Brawl345)
# Benötigt wird der "Dropbox-Uploader" von https://github.com/andreafabrizi/Dropbox-Uploader, welcher mit einem einfachen "curl "https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh" geholt werden kann. Dieser muss einmalig aufgerufen werden und alle Einstellungen vorgenommen werden. Erzeuge dann einen Symlink vom dropbox_uploader.sh in /usr/local/bin und nenne diese "dropbox_uploader"
# Die App sollte VOLLEN DROPBOX-ZUGRIFF haben.
#
# Optionen:
# -s: Auswählen eines Bereiches
# -u: Screenshot des aktuellen Fensters machen (nutzt scrot -ub für den Rahmen)
# --help: Hilfe anzeigen

# Setze Variablen
dbfolder="Bilder/Bildschirmfotos" # Verzeichnis, in das die Bilder auf Dropbox hochgeladen werden
scrotdir="$HOME/Bilder/Bildschirmfotos" # Das Verzeichnis, in dem die Bilder lokal gespeichert werden
scrotname="Bilschirmfoto vom `date +%Y-%m-%d` `date +%T`.png" # Name des Bildes

# Prüfe, ob User eine Option gesetzt hat
if [ "$1" = "-s" ]; then
      gnome-screenshot -af "$scrotdir/$scrotname"
   	   if [ ! -f "$scrotdir/$scrotname" ];
    	   then
    	   	echo "Vorgang wurde von User abgebrochen"
    	   	exit 0
    	   fi
   else
if [ "$1" = "-u" ]; then
      gnome-screenshot -wbf "$scrotdir/$scrotname" --border-effect=shadow
   	   if [ ! -f "$scrotdir/$scrotname" ];
    	   then
    	   	echo "Vorgang wurde von User abgebrochen"
    	   	exit 0
    	   fi
      else
if [ "$1" = "--help" ]; then
      echo "Screenshot To Dropbox by Andreas Bielawski"
      echo "Benutzung : ./screenshot [OPTIONEN]"
      echo "  Internetverbindung benötigt. Ohne gibt es lustige Nebenwirkungen!"
      echo "  Du musst dir den Dropbox-Uploader von"
      echo "  https://github.com/andreafabrizi/Dropbox-Uploader"
      echo "  laden und einen Systemlink in /usr/local/bin mit dem Namen"
      echo "  'dropbox_uploader' erstellen!"
      echo ""
      echo "	Keine Option	Den gesamten Bildschirm aufnehmen"
      echo "	-s		Einen frei wählbaren Bereich aufnehmen"
      echo "	-u		Das aktuelle Fenster aufnehmen"
      echo ""
      echo "<http://wiidatabase.de/>"
      exit 0
         else
      gnome-screenshot -f "$scrotdir/$scrotname"
    	   if [ ! -f "$scrotdir/$scrotname" ];
    	   then
    	   	echo "Vorgang wurde von User abgebrochen"
    	   	exit 0
    	   fi
     fi
     fi
     fi

# 1 Sekunde Wartezeit, damit die Benachrichtigung nicht mit auf dem Screenshot ist.
sleep 1

# Sende Benachrichtigung
cd "$scrotdir"
notify-send -t 3000 -i /usr/share/icons/gnome/32x32/status/info.png "Screenshot" "...wird hochgeladen" 

# Uploade den Screenshot
dropbox_uploader -p upload "$scrotname" "$dbfolder/$scrotname"

# Teile den Screenshot, nehme den Link...
URL=$(dropbox_uploader share "$dbfolder/$scrotname" | awk '{print $4}')

# ...und ersetze "www.dropbox.com" durch "dl.dropboxusercontent.com" und füge diesen in die Zwischenablage ein. Bei dl.dropboxusercontent.com wird das Bild direkt angezeigt.
echo "$URL" > /tmp/dropboxlink
sed s/www.dropbox/dl.dropboxusercontent/g /tmp/dropboxlink | xclip -selection clipboard
notify-send -t 8000 -i /usr/share/icons/gnome/32x32/status/info.png "Screenshot" "Link in Zwischenablage kopiert" 
exit 0
#!/bin/sh
# Liest Link aus Zwischenablage ein, fragt per wget den Server nach der richtigen URL und fügt ihn per xclip wieder ein
# xsel, xclip und wget benötigt

# Lese Adresse aus der Zwischenablage ein
ADRESSE=$(xsel -b)
echo "Vorgang eingeleitet - $ADRESSE wird ausgelesen..."

# notify-send -t 5000 -i /usr/share/icons/gnome/32x32/status/dialog-warning.png "Vorgang eingeleitet"  "$ADRESSE wird ausgelesen..."
# Frage per wget den Server nach der richtigen Location
URL=$(wget --max-redirect=0 --server-response -qO- "$ADRESSE" 2>&1 | grep [Ll]ocation | awk '{print $2}')

# Umweg über /tmp/, da xclip zu doof ist oder ich zu doof für xclip
echo "$URL"
echo "$URL" > /tmp/linkextender

# Füge Link in Zwischenablage ein
cat /tmp/linkextender | xclip -selection clipboard
notify-send -t 8000 -i /usr/share/icons/gnome/32x32/status/stock_attach.png "$ADRESSE ist" "$URL"
# rm /tmp/linkextender
exit 0
#!/bin/bash
# Lädt die aktuellste WiiFlow-Beta

echo "Downloade WiiFlow"
cd /tmp
# Die aktuelle WiiFlow-Beta laden, die immer im 7Z-Format auf FIX94s Seite hochgeladen ist
wget -r --level 1 -A 7z "http://fix94.no-ip.org/wf_revs/"
cd fix94.no-ip.org/wf_revs

# Die aktuellste WiiFlow-Revision auslesen. Nicht schön, klappt aber!
basename boot* > /tmp/wiiflowrev
sed s/boot_r//g /tmp/wiiflowrev > /tmp/wiiflowrev2 
REV=$(sed s/.7z//g /tmp/wiiflowrev2)
echo "WiiFlow Revision ist r$REV - 3 Sekunden zum Abbrechen"
sleep 3
notify-send -t 8000 -i /usr/share/icons/gnome/32x32/status/info.png "WiiFlow" "r$REV wird vorbereitet" 

# Entpacken der 7Z
7za x boot_r* -Oex/
cd ex/

# Überflüssiges löschen
rm -r bins/ imgs/

# LAAAAANGE URL-Liste mit allen WiiFlow-relevanten Daten (Sprachdateien, icon.png, meta.xml, Hilfedateien, Einstellungen, Theme)
wget https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/apps/wiiflow/icon.png https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/apps/wiiflow/meta.xml https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/docs/Controls.txt https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/docs/FAQ.txt https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/docs/Readme.txt https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/arab.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/brazilian.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/chinese_s.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/chinese_t.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/danish.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/dutch.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/english.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/finnish.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/french.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/gallego.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/german.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/hungarian.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/italian.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/japanese.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/korean.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/norwegian.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/polish.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/portuguese.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/russian.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/spanish.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/swedish.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/tagalog.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/Languages/turkish.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/boxcovers/JODI.png https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/fanart/GAMEID.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/help/danish.txt https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/help/dutch.txt https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/help/french.txt https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/help/german.txt https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/help/italian.txt https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/help/spanish.txt https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/settings/gameconfig1.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/settings/gameconfig2.ini https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/source_menu/Setup.txt https://open-wiiflow-mod.googlecode.com/svn/trunk/wii/wiiflow/themes/default.ini

# Erstelle der WiiFlow-Ordner
mkdir apps apps/wiiflow-beta docs wiiflow wiiflow/Languages wiiflow/boxcovers wiiflow/fanart wiiflow/help wiiflow/settings wiiflow/source_menu wiiflow/themes

# Ein paar mv-Kommandos zum Verschieben der Daten
mv boot.dol icon.png meta.xml apps/wiiflow-beta
mv Controls.txt FAQ.txt Readme.txt docs/
mv GAMEID.ini wiiflow/fanart
mv gameconfig*.ini wiiflow/settings
mv default.ini wiiflow/themes
mv Setup.txt wiiflow/source_menu
mv *.txt wiiflow/help
mv *.ini wiiflow/Languages
mv JODI.png wiiflow/boxcovers

# Zippen und verschieben
zip -r WiiFlow-Beta.zip *
mv WiiFlow-Beta.zip "~/Downloads/WiiFlow Beta.zip"
notify-send -t 8000 -i /usr/share/icons/gnome/32x32/status/info.png "WiiFlow" "ABGESCHLOSSEN!" 
exit 0
#!/bin/bash
# Baut ein Paket aus dem Arch User Repository
# Copyright (c) 2014, Andreas Bielawski <andreas (dot) bielawski (at) outlook (dot) com>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

# Setup
# Standard Konfigurationsdatei
CONFIG_FILE=~/.aurbuild

# Auf Konfigurationsdatei prüfen und laden
if [[ -e $CONFIG_FILE ]]; then

    # Lade Konfigurationen
    source "$CONFIG_FILE" 2>/dev/null

    # Geladene Daten prüfen
    if [[ $BUILDDIR == "" || $REPO == "" || $REPONAME == "" ]]; then
        echo -ne "Fehler beim Laden von $CONFIG_FILE...\n"
        echo -ne "Bitte lösche die $CONFIG_FILE und versuche es erneut.\n"
        exit 1
    fi

# Neues Setup...
else
    while (true); do

        echo -n " # Verzeichnis, in dem das Paket gebaut wird: "
        read BUILDDIR

        echo -n " # Verzeichnis, in dem deine Repo liegt: "
        read REPO

	echo -n " # Name deiner Repo: "
	read REPONAME

        echo -n " # Zusätzliche makepkg Parameter:  "
        read MAKEPKGPARAM

	echo -n " # Zusätzliche repo-add Parameter: "
	read REPOADDPARAM

	echo -n " # Was soll nach dem ganzen Zirkus veranstaltet werden? "
	read CUSTOM

	echo -ne "\n > Alles korrekt? [j/n]: "
        read ANTWORT
        if [[ $ANTWORT == "j" ]]; then
            break;
        fi
    done

# Speichern...
        echo "BUILDDIR=$BUILDDIR" > "$CONFIG_FILE"
	echo "REPO=$REPO" >> "$CONFIG_FILE"
	echo "REPONAME=$REPONAME" >> "$CONFIG_FILE"
	echo "MAKEPKGPARAM=\"$MAKEPKGPARAM\"" >> "$CONFIG_FILE"
	echo "REPOADDPARAM=\"$REPOADDPARAM\"" >> "$CONFIG_FILE"
	echo "CUSTOM=$CUSTOM" >> "$CONFIG_FILE"
	echo -ne "\n Setup abgeschlossen!\n"
fi

# Wenn nichts gesetzt ist
if [[ -z "$1" ]];
  then
    echo -e "Andis AUR-Builder\n"
    echo "Benutzung:"
    echo "$0 aur-paket [Parameter] "
    echo "Parameter: --new für neues Paket"
    exit 1
fi

# Variablen
PAKET="${1,,}" # nicht anpassen
TWOLETTERS="$(echo $PAKET | head -c 2)" # nicht anpassen
TARGZNAME="$PAKET.tar.gz" # nicht anpassen
PRESIGNING="y" # (y/n) - bei "y" wird zufällige Datei in /tmp/ erstellt und vor dem eigentlichen Download-Prozess gesigned. Dies ist nützlich, falls man Pakete signiert und einen Daemon laufen lässt, der nur alle paar Stunden nach dem Passwort für den Schlüssel fragt. Man kann dann das Skript einfach unbeobachtet laufen lassen, ohne, dass es beim Passwort einen time-out gibt und einem die Repo shreddert.
ZUFALLSDATEI="$RANDOM"

# Hier geht's los
# Prüfe auf REPO
if [ ! -d $REPO ];
  then
    echo "Erstelle $REPO"
    mkdir -p "$REPO"
    if [ ! -d $REPO ];
      then
	echo "FEHLER! "
	echo "$REPO konnte nicht erstellt werden. Hast du Schreibzugriff?"
	exit 1
    fi
fi

# Erstelle BUILDDIR
if [ ! -d $BUILDDIR ];
  then
    echo "Erstelle $BUILDDIR"
    mkdir -p "$BUILDDIR"
    if [ ! -d $BUILDDIR ];
      then
	echo "FEHLER! "
	echo "$BUILDDIR konnte nicht erstellt werden. Hast du Schreibzugriff?"
	exit 1
    fi
fi
cd "$BUILDDIR"

# PRESIGINING, falls angeschaltet
if [ "$PRESIGNING" == "y" ];
  then
    echo "Presigning wird ausgeführt"
    touch "/tmp/$ZUFALLSDATEI"
    gpg --detach-sign "/tmp/$ZUFALLSDATEI"
    if [ ! -f /tmp/$ZUFALLSDATEI.sig ];
      then
	echo "FEHLER! "
	echo "Presigning konnte nicht durchgeführt werden - breche sicherheitshalber ab"
	rm "/tmp/$ZUFALLSDATEI"
	exit 1
    fi
    echo "Presigning wurde erfolgreich ausgeführt."
    rm /tmp/$ZUFALLSDATEI*
fi

# Downloade .tar.gz Paket
echo "Downloade $PAKET..."
curl -O -# "https://aur.archlinux.org/packages/$TWOLETTERS/$PAKET/$TARGZNAME"
if [ ! -f $TARGZNAME ];
  then
   echo "FEHLER! "
   echo "Datei konnte nicht heruntergeladen werden."
   exit 1
fi

# Lösche vorhandenen Ordner
if [ -d $PAKET ];
  then
   rm -rf $PAKET
   if [ -d $PAKET ];
    then
      echo "FEHLER! "
      echo "Verzeichnis $PAKET konnte nicht gelöscht werden."
      exit 1
   fi
fi

# Entpacke .tar.gz
tar -vxzf "$TARGZNAME"
if [ ! -d $PAKET ];
  then
    echo "FEHLER! "
    echo "$TARGZNAME konnte nicht entpackt werden."
    exit 1
fi
rm $TARGZNAME
cd $PAKET
makepkg $MAKEPKGPARAM

# Prüfe, ob das Bauen geklappt hat
PKGCHECK=`ls -1 *.pkg.tar.xz 2>/dev/null | wc -l`
if [ $PKGCHECK = 0 ]
  then 
    echo "FEHLER! "
    echo "PKG konnte nicht gebaut werden."
    echo "Aufräumen..."
    rm -rf $PAKET
    exit 1
fi

# Lösche vorhandene .pkg.tar.xz
if [ ! "$2" = "--new" ]; 
  then
    rm $REPO/$PAKET*
fi
mv *.pkg.tar.xz* "$REPO"
cd $REPO
repo-add -n "$REPONAME.db.tar.gz" *.pkg.tar.xz $REPOADDPARAM
$CUSTOM
echo "Aufräumen..."
rm -rf $PAKET
echo "Erfolg! "
exit 0
#!/bin/bash
# Du benötigst:
# apt-get deb. Paketverwaltung (Ubuntu und Derrivate)
# libnotify-bin
# tar
# Siehe zur Wiederherstellung: http://wiki.ubuntuusers.de/Paketverwaltung/Tipps#Paketliste-zur-Wiederherstellung-erzeugen
#
# © 2013 Andreas Bielawski (http://wiidatabase.de/)

# Variablen setzen
SICHERUNGSNAME="Paketverwaltung.tar.gz"
SICHERUNGSZIEL="$HOME/Dokumente/"
EXTERNESICHERUNG="1" # Ein zweites Sicherungsziel festlegen (z.B. Externe Festplatte)? 0 = aus; 1 = an
EXTERNEHDD="/media/$USER/PLATTE"
EXTERNESSICHERUNGSZIEL="/media/$USER/PLATTE/GENAUES/UNTERVERZEICHNIS/"

# ------------------- AB HIER NICHTS MEHR ANPASSEN ------------------- #

# Pakete und deren Status sichern
dpkg --get-selections | awk '!/deinstall|purge|hold/ {print $1}' > ~/packages.list
apt-mark showauto > ~/package-states-auto

# Sources sichern
find /etc/apt/sources.list* -type f -name '*.list' -exec bash -c 'echo -e "\n## $1 ";grep "^[[:space:]]*[^#[:space:]]" ${1}' _ {} \; > ~/sources.list.sav

# Packe die Sicherung in eine .tar.gz
cd ~/
tar -czf "$SICHERUNGSNAME" packages.list package-states-auto sources.list.sav

# Sicherung wird in "Dokumente" verschoben, vorhandene überschrieben
cp "$SICHERUNGSNAME" "$SICHERUNGSZIEL"

# Sicherung auf externe Festplatte speichern
if [ "$EXTERNESICHERUNG" == "1" ];
then
if [ -d "$EXTERNEHDD" ];
then
   if [ -d "$EXTERNESSICHERUNGSZIEL" ];
   then
      cp "$SICHERUNGSNAME" "$EXTERNESSICHERUNGSZIEL"
   else
      mkdir -p "$EXTERNESSICHERUNGSZIEL"
      cp "$SICHERUNGSNAME" "$EXTERNESSICHERUNGSZIEL"
   fi
else
   echo "Externes Sicherungsziel nicht angeschlossen - Überspringe..."
fi
fi


# Aufräumen
rm packages.list package-states-auto sources.list.sav $SICHERUNGSNAME

# Benachrichtigung senden
if [ "$EXTERNESICHERUNG" == "1" ];
then
if [ -d "$EXTERNEHDD" ];
then
   notify-send -t 8000 -i /usr/share/icons/gnome/32x32/status/info.png "Ausgeführt" "Die Sicherung der Pakete und Sources wurde erfolgreich ausgeführt - es wurde auch auf die externe Festplatte gesichert." 
   echo "Die Sicherung der Pakete und Sources wurde erfolgreich ausgeführt - es wurde auch auf die externe Festplatte gesichert." 
else
   notify-send -t 8000 -i /usr/share/icons/gnome/32x32/status/info.png "Ausgeführt" "Die Sicherung der Pakete und Sources wurde erfolgreich ausgeführt."  
   echo "Die Sicherung der Pakete und Sources wurde erfolgreich ausgeführt." 
fi
else
   notify-send -t 8000 -i /usr/share/icons/gnome/32x32/status/info.png "Ausgeführt" "Die Sicherung der Pakete und Sources wurde erfolgreich ausgeführt."
   echo "Die Sicherung der Pakete und Sources wurde erfolgreich ausgeführt."
fi
#!/bin/bash
#
# Dieses Skript sichert die Namen der installierten Pakete (auch die aus dem AUR) in einer Liste, die Pacman.conf und die mirrorlist, damit du 
# alle nach einer Neuinstallation einfach wiederherstellen kannst!
#
# Du benötigst:
# Pacman-Paketverwaltung
# libnotify
# tar
# angepasste Variablen für externe Festplatte.
#
# Siehe zur Wiederherstellung: https://wiki.archlinux.org/index.php/pacman_Tips#Backing_up_and_retrieving_a_list_of_installed_packages
#
# © 2014 Andreas Bielawski (http://wiidatabase.de/)

# Variablen setzen
SICHERUNGSNAME="Pacman.tar.gz"
SICHERUNGSZIEL="$HOME/Dokumente/"
EXTERNESICHERUNG="1" # Ein zweites Sicherungsziel festlegen (z.B. Externe Festplatte)? 0 = aus; 1 = an
EXTERNEHDD="/run/media/$USER/PLATTE"
EXTERNESSICHERUNGSZIEL="/run/media/$USER/PLATTE/GGF/UNTERVERZEICHNISSE/"

# ------------------- AB HIER NICHTS MEHR ANPASSEN ------------------- #

# Paketliste sichern
cd ~/
pacman -Qqen > pkglist
pacman -Qqm > pkglist-aur

# Pacman.conf + mirrorlist sichern
cp /etc/pacman.conf pacman.conf
cp /etc/pacman.d/mirrorlist mirrorlist

# Packe die Sicherung in eine .tar.gz
tar -czf "$SICHERUNGSNAME" pacman.conf pkglist pkglist-aur mirrorlist

# Sicherung wird in "Dokumente" verschoben, vorhandene überschrieben
cp "$SICHERUNGSNAME" "$SICHERUNGSZIEL"

# Sicherung auf externe Festplatte speichern
if [ "$EXTERNESICHERUNG" == "1" ];
then
if [ -d "$EXTERNEHDD" ];
then
   if [ -d "$EXTERNESSICHERUNGSZIEL" ];
   then
      cp "$SICHERUNGSNAME" "$EXTERNESSICHERUNGSZIEL"
   else
      mkdir -p "$EXTERNESSICHERUNGSZIEL"
      cp "$SICHERUNGSNAME" "$EXTERNESSICHERUNGSZIEL"
   fi
else
   echo "Externes Sicherungsziel nicht angeschlossen - Überspringe..."
fi
fi


# Aufräumen
rm pkglist pkglist-aur pacman.conf mirrorlist $SICHERUNGSNAME

# Benachrichtigung senden
if [ "$EXTERNESICHERUNG" == "1" ];
then
if [ -d "$EXTERNEHDD" ];
then
   notify-send -t 8000 -i /usr/share/icons/gnome/32x32/status/info.png "Ausgeführt" "Die Sicherung der Pakete und Sources wurde erfolgreich ausgeführt - es wurde auch auf die externe Festplatte gesichert." 
   echo "Die Sicherung der Pakete und Sources wurde erfolgreich ausgeführt - es wurde auch auf die externe Festplatte gesichert." 
else
   notify-send -t 8000 -i /usr/share/icons/gnome/32x32/status/info.png "Ausgeführt" "Die Sicherung der Pakete und Sources wurde erfolgreich ausgeführt."  
   echo "Die Sicherung der Pakete und Sources wurde erfolgreich ausgeführt." 
fi
else
   notify-send -t 8000 -i /usr/share/icons/gnome/32x32/status/info.png "Ausgeführt" "Die Sicherung der Pakete und Sources wurde erfolgreich ausgeführt."
   echo "Die Sicherung der Pakete und Sources wurde erfolgreich ausgeführt."
fi