gelöschter Benutzer

Arbeiten mit der Shell

am 20.04.2012, 17:47 Uhr eröffnete folgenden Thread
Linux    5983 mal gelesen    3 Antwort(en).

Hallo Seitenreporter,

hier mal einpaar kleine Tipps und Tricks zum arbeiten mit der Shell. Fangen wir mal mit der Bildoptimierung an.


Wir haben Folgendes Scenario:
Man möchte eine Website publishen und diese hat sehr viele Bilder, verteilt in vielen verschieden Verzeichnissen.

Nun will man diese auf die richtigen Maße bringen und Weboptimiert speichern. Jedes Bild einzeln zu öffnen und zu skalieren kann dann sehr viel Zeit kosten.


Wie geht man vor?
Zurerst einmal mit cd in das richtige Verzeichnis wechseln.
[SH]cd images/galerien[/SH]

Von dort ausgehend kann man sich alle Bilder (zB *.jpg) mit find herraus suchen.
[SH]find -iname '*.jpg'[/SH]

Wenn man nun die Bilder skalieren möchte, kann man das mit der ImageMagick Bibliothek tun.
[SH]convert bild.jpg -scale 800x600 bild.jpg[/SH]

Nun kann man die Bilder noch optimieren um die Dateigröße zu minimieren. Hier für gibt es das Tool jpegoptim.
[SH]jpegoptim -fom90 --strip-all bild.jpg[/SH]

Jetzt ist das Bild bild.jpg auf 800x600px skaliert und mit einer Qualität von 90% optimiert.

Da wir das aber nicht für jedes Bild einzeln machen wollen packt man das ganze in eine for Schleife.
[SH]for i in `find -iname '*.jpg'`
do
convert $i -scale 800x600 $i
jpegoptim -fom90 --strip-all $i
echo "Bild $i wurde optimiert"
done[/SH]

Wenn man einfach nur optimieren möchte kann man das auch mit xargs machen, da jpegoptim mehrere Bilder gleichzeitig als Parameter entgegen nimmt. Die Syntax wäre so:
[SH]jpegoptim [options] <filenames>[/SH]
Mit xargs kann man das Resultat der Suche und dem Befehl zusammenfügen.
[SH]find -iname '*.jpg' -print0 | xargs -0 jpegoptim -fotm90 --strip-all[/SH]


Und das wars auch schon. Wenn man statt jpgs, pngs oder gifs optimieren möchte wechsel man einfach das Tool.

optipng - Optimiert pngs und korrigiert Fehler
pngnq, pngquant - reduzieren die Farbpalette von pngs
gifscale - kann gifs optimieren und bearbeiten


Mit ImageMagick kann man noch sehr viel mehr machen, als einfach nur skalieren. Es lassen sich Effekte wie Sepia oder Schwarz/Weiß auf Bilder anwenden, man kann Bilder auch zerschneiden oder Wassermarken einfügen und noch viel viel mehr.

Wenn man mehr Informationen zu den Befehlen habe möchte, kann man auf in der Shell folgende Befehle verwenden.
[SH]man convert
convert --help[/SH]



Schöne Grüße
Thomas

PS: Fortsetzung folgt



gelöschter Benutzer
am 19.06.2012, 16:43 Uhr schrieb

Hi Community,

es ist Zeit für eine kleine Fortsetzung, Heute mal zum Thema Datenbanken Backup über die Shell. Für die Beispiele hier verwende ich MySQL.

Mit diesen Befehl kann man sich ganz einfach über den Clienten mit dem SQL Server Verbinden und seine Querys senden.
[sh]mysql -u Benutzername -p Passwort[/sh]
Wenn man sein Passwort nicht direkt und für alle sichtbar auf der Kommandozeile eintippen will lässt man das Passwort einfach weg, danach kommt eine verschleiert Eingabemaske des Passwortes.

Danach kann man alle Abfragen direkt eintippen und ausführen lassen, ein Semikolon ( schließt das Kommando ab.


Nun zum eigentlichen, wie macht man ein Backup.
Dazu gibt es den Befehl mysqldump. Hier mal ein Beispiel.
Die Ausgabe würde direkt auf dem Bildschirm erscheinen wenn man sie nicht mit > Datenbank.sql auf eine Datei umleitet.
[sh]mysqldump -p -u Benutzer Datenbank > Datenbank.sql[/sh]

Wenn man ein Backup von einem externen Server (also nicht localhost) machen möchte gibt man dazu einfach den Host an. Der Benutzer braucht dazu aber die entsprechenden Rechte, sich von einem externen Server mit dem SQL Server verbinden zu dürfen. Wenn man den Parameter -h einfach weg lässt wird auf den localhost zugegriffen.
[sh]mysqldump -p -u Benutzer -h example.com Datenbank > Datenbank.sql[/sh]


Nun haben wir unser Backup, jetzt gibt es mehre Möglichkeiten es wieder einzuspielen.
[sh]mysql -u Bennutzer -p -D Datenbank < Datenbank.sql[/sh]

Wenn das Backup lokal ist kann man es auch mit folgendem Query machen.
[SQL]SOURCE Datebnabk.sql;[/SQL]

Wenn man eine bestehende Datenbank und ihre Tabellen überschreiben möchte muss man das beim Export festlegen oder man leert die Datenbank von Hand.
[sh]mysqldump -p -u Benutzer --add-drop-table=TRUE Datenbank > Datenbank.sql[/sh]

und das war es eigentlich auch schon.
Zum Schluß hab ich noch ein kleines Shell Skript für euch mit den ganz einfach alle Datenbanken einzeln exportiert werden. Die Daten werden anschließend komprimiert.

[sh]#!/bin/sh

echo "Benutzername?"
read user
echo "Passwort ?"
stty -echo
read pass
stty echo

for db in `mysql -u$user -p$pass -e \'SHOW DATABASES;\' --column-names=FALSE`
do
if [ "$db" = "mysql" -o "$db" = "information_schema" -o "$db" = "performance_schema" ]
then echo "skip $db"
else
echo "Exportiere: $db"
mysqldump -u$user -p$pass $db > $db.sql
zip $db.sql.zip $db.sql
rm $db.sql
fi
done[/sh]

So viel Spaß beim testen

Schöne Grüße
Thomas


hansen
Foren Moderator
Content Gott (1886 Beiträge)
am 19.06.2012, 17:24 Uhr schrieb hansen

Hallo Thomas,

die Arbeit, die Du Dir damit machst, geht hier im Forum etwas unter.
Hier wäre es doch besser aufgehoben und auch Du hättest etwas mehr davon:

Artikel Seitenreport

Wobei es aber auch die Qualität des Forums steigert.

Gruß
hansen


Nepal Rundreisen


gelöschter Benutzer
am 19.06.2012, 18:00 Uhr schrieb

Hi Hansen,

ich hatte es mal im Blog probiert aber irgendwas ging da nicht richtig (ist schon ne weile her) und da hab ichs hier rein geschrieben.

Schöne Grüße
Thomas


  • 1


« zurück zu: Linux

Das Seitenreport Forum hat aktuell 5273 Themen und 36107 Beiträge.
Insgesamt sind 48345 Mitglieder registriert.