Linux Spickzettel

find

  • finde alle Dateien, die in den letzten 5 Tagen verändert wurden
    • find * -type f -mtime 5

tar Systemsicherung

Sicherung mit allen Attributen.

  • tar --xattrs -czpvf tarfile.tgz <verzeichnis>

Extfs Löschen rückgängig machen

Die Chancen stehen nicht sehr gut, aber man kann es probieren mit dem Tool extundelete. Für Ubuntu gibts kein Paket, also als Source herunterladen und kompilieren. Siehe hier:

Samba Freigabe mounten

  • mount -t cifs //hostname/freigabename /mnt -o user=xyz -o workgroup=Gruppenname

Repository alter Ubuntu Releases nicht mehr gültig

Ältere Ubuntu-Releases finden mit apt-get keine Pakete mehr, weil die nicht mehr am ursprünglichen Ort zu finden sind. Betrifft mittlerweile z.B. Ubuntu Dapper. In /etc/apt/sources.lst braucht man aber alles, was vor .ubuntu.com steht durch old-releases zu ersetzen. Danach ein apt-get update und alles sollte wieder funktionieren.

Samba Druckprobleme

Symptome: Drucken hakt manchmal, viele alte Druckaufträge werden noch angezeigt. Im Logfile log.smbd findet man rec_read bad magic 0x0 at offset=0

Schuld kann eine defekte tdb-Datei sein. Diese findet man unter /var/cache/printing/<printername>.tdb. Man stoppt Samba und löscht diese Datei einfach. Nach Neustart von Samba wird die Datei neu angelegt.

Netzwerk-Geschwindigkeit testen (iperf)

 
Falls kein Linux installiert, linuxrescuecd verwenden. Dort aber
den Network-Manager killen, sonst haut der regelmäßig die gesetzte
IP-Adresse weg.

Auf Rechner A den Server starten:
iperf -s

Auf Rechner B den Client starten:
iperf -c <IP_VON_RECHNER_A>

Für längeren Datenaustausch (default = 10s) kann Parameter -t <Zeit> 
benutzt werden


Weblinks:

Mit cp Verzeichnisse kopieren

Die cp -ax Methode sollte auf allen modernen Unix-Systemen sauber funktionieren.

 
cp -ax src dst
cp -ax /var/. /backup/ziel/var
cp -ax /home/. /backup/ziel/home

  • -a: preserve symbolic links, preserve file attributes if possible, and copy directories recursively
  • -x: stay on this filesystem, i.e., do not copy any files within the directory that are from a different filesystem mounted onto this one.

Mit tar Verzeichnisse kopieren

 
( cd /srcdir && tar c .) | ( cd /dstdir && tar xp)

  oder

(cd olddirectory && 'tar cpf - . ) | (cd newdirectory && tar xvpf -)

Mit cpio Verzeichnisse kopieren

 
find Quellverzeichnis -depth -print | cpio -pdumv Zielverzeichnis

  oder

cd /quelle; find . -print0 | cpio -0Vmdp /ziel

Optionen:

  • -m Behält die Modifikationszeit des gesicherten Originals bei. Wirkt nicht auf Verzeichnisse.
  • -d Erzeugt beim Rücksichern die notwendigen Verzeichnisse.
  • -u unconditionally overwrite any conflicting, preexisting files in newdirector
  • -v verbose

Netzwerkeinrichtung

Netzwerk manuell einrichten

 
ifconfig eth0 192.168.0.23 netmask 255.255.255.0
route add default gw 192.168.0.1

Route anlegen (Netz 192.168.0.0 soll über Gateway 192.168.1.114 geroutet werden)

 
route add -net 192.168.0.0/24 gw 192.168.1.114

Route löschen

 
route del -net 192.168.0.0 netmask 255.255.255.0

Ip-Forwarding einschalten im Kernel

 
sysctl -w net.ipv4.ip_forward=1

IP-Forwarding permanent einschalten: Eintragen in etc/syscntl.conf

 
net/ipv4/ip_forward=1

IP-Forwarding checken (0=disabled, 1=enabled)

 
cat /proc/sys/net/ipv4/ip_forward

growisofs - DVD brennen

Verzeichnis auf DVD brennen (Joliet+Rock Ridge)

 
growisofs -speed=1 -Z /dev/hdc -R -J src_dir

ISO Image brennen

 
growisofs -Z /dev/hdc=image.iso

mkisofs

ISO-Filesystem erzeugen (Joliet+Rock Ridge)

 
mkisofs -R -J -o image.iso src_dir

cdrecord

Image brennen

  
cdrecord dev=/dev/hdc speed=16 -dao image.iso

Achtung: Ohne -dao gibt es mitunter Probleme. Wenn man eine so gebrannte CD mit "dd if=/dev/hdc of=meinimage.iso" ausliest, gibt es am Schluß ein Read-Error. Siehe hierzu auch: http://www.troubleshooters.com/linux/coasterless.htm

Samba: Beispiel-Ini

 
#======================= Global Settings =======================

[global]

# ::Arbeitsgruppe 
   workgroup = WORKGROUP 

# ::Kommentar String des Servers 
   server string = %h server (Samba, Ubuntu)

# ::TCP-Socket Optimization
  socket options = TCP_NODELAY

# ::Gast-Benutzer festlegen
  guest account = nobody

# :: paranoid check
  invalid users = root

# :: fuer jede Maschine separates Logfile
  log file = /var/log/samba/log.%m

# :: Log Level (mehr als 3 ist oft nicht sinnvoll)
  log level = 3

# :: max. Logsize in KB
  max log size = 1000

# :: wieviel Logs in Syslog (Rest in Samba Logs)
  syslog = 0

# :: Login/Security Modus
  security = user

# ::DNS-nach-NETBIOS-Namensauflösung
  dns proxy = yes

# ::WINS-Server aktivieren
  wins support = yes 

# ::OS-Level fuer die Wahl des Master Domain Browsers
  os level = 65


# ::Will Masterbrowser werden
  preferred master = yes 
  local master     = yes

# ::Domain Master werden
  domain master    = yes


# ::Zugriff auf anderen WINS-Server
#  wins server      = 192.168.0.114

# :: Verschluesselte Passwoerter
  encrypt passwords = yes

# :: Passwort-Datenbank Backend
  passdb backend = tdbsam
  passdb expand explicit = no

# :: Archivbit nicht mappen
  map archive = no
  obey pam restrictions = yes

# :: Umlaute
  display charset = UTF8
  dos charset     = CP850
  unix charset    = UTF8

# Printing

# :: CUPS Printing System
  printing      = cups
  printcap name = cups
  load printers = yes


# ---------------------------- Shares ------------------------------------
# Printers
[printers]
  comment = All Printers
  path = /var/spool/samba
  browseable = no
  guest ok = yes
  printable = yes
  printer admin = root
  writable = no

[kldata]

# :: Kommentar
  comment = Daten Klaus

# :: Schreizugriff?
  writable = yes

# ::Pfad Freigabe auf SambaServer
  path = /home/pchome/kldata

  valid users = klaus
  create mask = 770
  force directory mode = 2770
  directory mask = 2770

[pub]

# :: Kommentar
  comment = ungesicherte Daten public

  writable = yes

  path = /home/pchome/pub

  valid users = user, nobody
  create mask = 777
  force directory mode = 2777
  directory mask = 2777



[LinuxDoc]
  comment = Linux Doc

  writable = no

  path = /user/share/doc

  guest ok = yes

[www]
  comment = Linux www
  writable = yes
  path = /var/www
  guest ok = no
  valid users = klaus
  create mask = 770
  force directory mode = 2770
  directory mask = 2770


iconv: Zeichensatz in Dateien umwandeln

 
# Von CP850 auf UTF8
> iconv -f cp850 -t utf8 src_file > dst_file

convmv: Zeichensatz Dateinamen umwandeln

 
# Von CP850 auf UTF8 mit Unterverzeichnissen rekursiv
> convmv -r -f cp850 -t utf-8 --notest /path/to/dir

rsync: Verzeichnis Sync über ssh

Prinzipiell gilt die Reihenfolge rsync Quelle Ziel

 
# Verzeichnis syncen, Dateien auf Zielrechner, die sich nicht
# auf Quellrechner befindet, werden gelöscht. Ausgeführt auf
# Zielrechner. myfolder wird synchronisiert mit Unterverzeichnissen.
> rsync -av -I --stats --progress -e ssh src_server:/home/myfolder /home

--delete - Lösche Dateien auf Empfängerseite, die auf Senderseite nicht vorhanden sind.

-I - Schnellcheck (gleiches Datum/gleiche Länge, dann ist gleich) abschalten

Kopieren über ssh

 
Image über ssh kopieren:
# dd if=/dev/hda1 | ssh mybackuphost "cat > /home/backup/hda1.bin"

Verzeichnisbaum über ssh:
# tar -cf - foo/bar/ | ssh baz@qux tar -xvf -


cryptsetup

 
verschlüsselte Partition vorbereiten:

 cryptsetup create --verify-passphrase -c aes-cbc-essiv:sha256 crypto1 /dev/sdb5
   -> crypto1=Name des Laufwerks, was man nachfolgend unter 
      /dev/mapper/crypto1 findet. /dev/sdb5 eine Beispielpartition, die
      als verschlüsselte Partition genutzt werden soll. 
      Inhalte werden zerstört.
      cryptsetup fordert zur Passworteingabe auf.

 mkfs.ext3 /dev/mapper/crypto1
   -> verschlüsselte Partition neu formatieren

 cryptsetup remove crypto1
   -> wieder entfernen, Partition ist jetzt vorbereitet

verschlüsselte Partition mounten:
  cryptsetup create -c aes-cbc-essiv:sha256 crypto1 /dev/sdb
    -> Passworteingabe
  mount /dev/mapper/crypto1 /mnt/crypto1
    -> kann jetzt benutzt werden

verschlüsselte Partition wieder entfernen:
  umount /mnt/crypto1
  cryptsetup remove crypto1



Partition eines Festplatten-Komplett-Images mounten

Wenn man ein Image einer kompletten Festplatte mit dd oder dd_rescue erzeugt hat, kann man es nicht ohne weiteres als loop-Device mounten. Man muss vielmehr erstmal den Start und die Größe der konkreten Partition ermitteln, die man mounten möchte. Hierzu eignet sich sfdisk recht gut. Ist dies nicht vorhanden, kann man auch mit fdisk und ein paar Rechnereien zum Ziel kommen.

 
sfdisk -d /tmp/myimage.img
  -> Auflistung der Partitionen, die existieren mit Startsektor und Size

echo $((start * 512)) $((size * 512))
  -> Werte der konkreten Partition berechnen, 
     die fürs mounten gebraucht werden

mount -o loop,offset=<wert1>,sizelimit=<wert2> /tmp/myimage.img /mnt/mypartition


Komplett Image einer Festplatte anlegen

dd_rescue eignet sich besser zum Anlegen eines Images, als dd. Es kann mit defekten Sektoren umgehen und hat einen Fortschrittsbalken. Auch eine Logdatei erhält man.

Auch ddrescue eignet sich, hat aber eine etwas andere Syntax. In neueren Ubuntu-Linux Versionen ist nur noch das Paket gddrescue verfügbar, in dem ddrescue enthalten ist. Das alte dd_rescue ist nicht mehr verfügbar.

Weil bei diesen Images Byte für Byte kopiert werden, ist es eine hundertprozentige Kopie des Originals, ohne das man sich Fehler von Werkzeugen einhandeln kann, die das jeweilige Filesystem interpretieren. So lassen sich auch beliebige Dateisysteme kopieren, für die man keine speziellen Werkzeuge hat.

Nachteil ist, dass man auch unbenutzten Speicher mitkopiert und so die Images wesentlich größer sind, als mit Werkzeugen, die das Dateisystem analysieren. Bei Festplatten, die ziemlich voll gepackt sind, spielt das aber weniger eine Rolle.

Solche Images kann man mit Loop-Device mounten oder auf eine andere Festplatte kopieren, die mindestens so groß sein muss, wie die Ursprungs-Festplatte.

Für Archivzwecke sollte man eine md5sum vom Image machen und diese auch nochmal mit der Ursprungs-Festplatte vergleichen. Das schafft zusätzliche Sicherheit, dass man eine identische Kopie hat.

 
dd_rescue -v -l /tmp/myimage.log /dev/sda /tmp/myimage.img

Ubuntu: hdparm persistent einrichten

In der Datei /etc/hdparm.conf kann man alle Einstellungen vornehmen, die bei jedem Booten gemacht werden sollen. Die Datei ist recht gut dokumentiert.

Ubuntu: Runlevel Editor

rcconf