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:
- https://sites.google.com/site/pedrofcpinto/Home/interests/howtorecoverdeletedfilesinubuntu
- http://sourceforge.net/projects/extundelete/?source=pdlp
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