Skripte unter Linux installieren

Manchmal hat man ein Skript geschrieben welches man systemweit aufrufen möchte. Dazu muss dieses natürlich „installiert“ werden. Genaugenommen handelt es sich bei der Installation nur um eine Kopie an den richtigen Ort im System. In diesem Fall ist das der Ordner „/usr/local/bin/“. Allerdings wird für ein solche Operation nicht „cp“ genutzt. Stattdessen wird dies mittels „install“ erledigt:

sudo install skript.sh /usr/local/bin/skript.sh

Damit wird das Skript in den entsprechenden Ordner kopiert. Daneben werden die Dateirechte und Attribute angepasst. Anschließend kann das Skript von allen Nutzern systemweit genutzt werden.

Weitere Informationen gibt es unter:
https://de.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

Backup per sshfs

Wenn man einen Server betreibt ist ein Backup sehr praktisch. Viele Hoster bietet mittlerweile Backupspeicher an, auf welchen man seine Daten sichern kann. In diesem Artikel wird dabei davon ausgegangen das sich auf dem Server größere Imagedateien befinden, welche inkrementell gesichert werden sollen. Im ersten Schritt wird der Backupspeicher eingebunden. Viele Server lassen sich dabei mit SFTP ansprechen. Um dieses einzubinden muss das passende Paket installiert werden:

apt-get install sshfs

Danach erstellen wir einen Mountpunkt:

mkdir /mnt/backup

Anschließend kann das entfernte Dateisystem eingebunden werden:

sshfs :/ /mnt/backup

Für das Backup wird „rdiff-backup“ genutzt, welches über die Paketverwaltung installiert werden kann:

apt-get install rdiff-backup

Problematisch an „rdiff-backup“ ist die Tatsache, das dieses unter anderem mit Hardlinks arbeitet und diese bei SFTP unter Umständen nicht zur Verfügung stehen. Deshalb muss im ersten Schritt ein Image erzeugt werden und dieses eingebunden werden. Mittels:

rdiff-backup /etc/ /mnt/backup/etc/

kann dann anschließend das Backup angelegt werden. Möchte man ermitteln welche Backupversionen sich im Verzeichnis befinden, so kann dies durch

rdiff-backup -l /mnt/backup/etc/

bewerkstelligt werden. Damit man das ganze nicht immer per Hand erledigen muss (was bei Backups nicht ratsam wäre), habe ich das ganze in ein Skript gegossen welches auf GitHub zu finden ist.

Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/FUSE/sshfs
http://www.nongnu.org/rdiff-backup/
http://www.thomas-krenn.com/de/wiki/Backup_unter_Linux_mit_rdiff-backup

Minecraft im Weltall

Minecraft ist mittlerweile millionenfach verkauft worden. Wer von den Klotzwelten nicht genug bekommen kann, der sollte sich ScrumbleShip anschauen. Dabei handelt es sich um eine Raumschiffssimulation, welche aussieht als ob der Minecraft-Welt entsprungen wäre. Das Spiel welches mittlerweile erfolgreich über Kickstarter finanziert wurde sammelte dabei insgesamt $12,093 ein.

Ein Schiff im All

Ein Schiff im All

Die offizielle Seite des Spieles ist unter https://www.scrumbleship.com zu finden. Dort kann das Spiel in drei Editionen heruntergeladen werden. Bei der ersten Edition handelt es sich um die Demo-Version während es daneben noch die Voll- und die Deluxe-Version gibt. Sie unterscheiden sich dabei durch einige Features. Allen Versionen (bis auf die Demo) ist gemein, das der Quelltext mitgeliefert wird, was allerdings nicht bedeutet, das es sich dabei um freie Software handelt. Erhältlich ist das Spiel dabei für Linux, Windows und Mac OS X, wobei die Mac OS X Version auf einem Maverick noch zu Problemen führt.

Images unter Linux anlegen und nutzen

Unter Linux ist es ohne Probleme möglich ein Image zu mounten. In diesem Fall soll ein leeres Image erstellt werden und anschließend eingebunden werden. Erstellt wird das Image unter Zuhilfenahme von „dd“:

dd if=/dev/zero of=image.img bs=1024000 count=1000

Das in diesem Fall erstellte 1 GiB große Image ist mit Nullen gefüllt. Mittels:

mkfs.ext4 image.img

wird das Image mit einem ext4 Dateisystem versehen. Dies ist notwendig um es anschließend einzubinden. Bewerkstelligt wird das durch den Befehl „mount“:

mount -o loop /home/seeseekey/image.img /home/seeseekey/ImageMountpoint/

Nach dem erfolgreichen Einbinden kann das Image genutzt werden.

Verzeichnis von einem Git Repository in ein anderes verschieben

Unter Git möchte man manchmal ein Verzeichnis von einem Repository zu einem anderen verschieben. Natürlich soll dabei die Revisionsgeschichte nicht verloren gehen. In diesem Fall hilft folgendes Bashskript:

#!/bin/sh
# moves a folder from one git repository to another
# moveFolder <absolute repository one path> <repository one folder> <absolute repository two path>

# prepare repository one
cd $1
git clean -f -d -x
git checkout -b tmpBranch
git filter-branch --subdirectory-filter $2 HEAD
mkdir $2
mv * $2
git add .
git commit -a -m "Move files into folder"

#import in repository two
cd $3
git remote add repositoryOne $1
git pull repositoryOne tmpBranch
git remote rm repositoryOne

#cleanup
cd $1
git checkout master
git branch -D tmpBranch

#remove folder with history from repository one
cd $1
git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch $2" HEAD

Genutzt wird das Skript dabei wie folgt:

./moveFolder /absolute/path/to/repo/one folderFromRepoOne /absolute/path/to/repo/two

Nachdem das Verzeichnis in das neue Repository mitsamt der Revisionsgeschichte übertragen wurde, wird es aus dem alten Repository entfernt. Das Skript funktioniert dabei unter Windows, Linux und Mac OS X. Die jeweils aktuellste Version ist auf GitHub zu finden.