Bash: Mehrere Dateien umbenennen
Mai 2, 2014 — 10:45

Manchmal bekomme ich aus der Windows-Welt Dateien mit folgendem Schema: „abc.jpg.jpg, def.jpg.jpg“. Ursache dürfte das imo unsinnige Feature sein Extensions zu verstecken in Verbindung mit Benutzern/Programmen, welche damit nicht klar kommen.

Die Dateien lassen sich zum Glück recht fix umbenennen:


for file in *.jpg.jpg; do mv "$file" "${file/.jpg/}"; done

Bash-Scripting: Mysql-Dumpscript mit Rotation der Sicherungen
Oktober 22, 2013 — 10:00

Backup…

Ein Script um ein Dump einer MySQL-Datenbank zu ziehen und komprimiert als bz2-Datei zu speichern. Eine einfache Backuprotation wurde mit eingefügt, so dass die letzten X-Versionen in den Ordnern 1-X vorgehalten werden.

#!/bin/bash
# This Backup-Script creates a dump from the entire mysql-Database
# and safes it in the backup-directory.
# Some Backup-Rotation included.
BACKUP_ROOT="/mnt/backup/mysql"
DB_USER="root" #DB-root
DB_PASSWD="Password" #DB-root-pw
ROTATIONS="7" #Number

echo ""
echo "MySQL-Backup"
echo "----------------------------------------"
echo "Rotating Backups..."
echo "This may take some time..."
# Delete eldest Backup
rm -rf $BACKUP_ROOT/$ROTATIONS
# create directories if needed
COUNT=1

for ((i=1; $i<=$ROTATIONS; i++))
do
  if [ ! -d ${BACKUP_ROOT}/${COUNT} ]; then
    mkdir -p $BACKUP_ROOT/$COUNT
  fi
  COUNT=$(($COUNT+1))
done

# rotating the backups
COUNT=0

for ((i=1; $i<$(($ROTATIONS)); i++))
do
  mv $BACKUP_ROOT/$(($ROTATIONS-$COUNT-1)) $BACKUP_ROOT/$(($ROTATIONS-$COUNT))
  COUNT=$(($COUNT+1))
done
mkdir $BACKUP_ROOT/1
echo ""
echo "Creating new backup from Database... "
echo "This may take some time..."
mysqldump --user=$DB_USER --password=$DB_PASSWD --all-databases | bzip2 > $BACKUP_ROOT/1/mysql-`date +%Y-%m-%d`.bz2
echo "----------------------------------------"
echo ""
echo "done"
exit 0

…und Restore

Der Dump kann über eine Pipe entpackt und  zurückgesichert werden.

bunzip2 < mysql-2013-10-25.bz2 | mysql -uroot -p