Inhaltsverzeichnis
here: files, FTP, SCP, rsync, unison, Quota
Kopieren von Daten(ftp,scp,rsync,unison) und quota
FTP
Da die FTP-Spezifikation bis auf die einfache Benutzer-Authentifizierung, die Kennung und Passwort unverschlüsselt zwischen Client und Server übermittelt, keinerlei Sicherheitsfunktionen vorsieht und es bessere Alternativen gibt, wird dieser Dienst nicht mehr auf unseren Servern (z.B. www) zur Verfügung gestellt. Daten können aber einfach und sicher per scp kopiert werden.
SCP
Mit SCP (Secure Copy Protokoll) können Dateien verschlüsselt zwischen zwei Computern übertragen werden. Die Syntax des Kommandos ist ähnlich des cp-Befehls.
Eine Datei ZUM Host (z.B. www) kopieren:
scp quelldatei benutzer@host:verzeichnis/zieldatei
Hinweis(e): Wird der Benutzername mit dem @-Zeichen weggelassen, wird der gleiche Benutzer genommen, mit dem man gerade angemeldet ist. Wird das Zielverzeichnis weggelassen, wird in das /home Verzeichnis des jeweiligen Benutzer kopiert. Der Doppelpunkt nach dem host muss aber auf jeden Fall gesetzt werden.
Eine Datei VOM Host kopieren:
scp benutzer@host:verzeichnis/quelldatei zieldatei
Hilfe: Bei der ersten Verbindung mit einem Rechner per ssh wird auf dem lokalen Rechner ein Schlüssel abgelegt. Es wird nun bei jedem erneuten Verbindungsaufbau geprüft, ob der Rechner unter dem Namen, der gleiche ist als beim letzten mal. Wird aber ein Server neu aufgesetzt und man verbindet sich jetzt mit diesem Rechner, kommt es zu folgender Meldung:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: POSSIBLE DNS SPOOFING DETECTED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ The RSA host key for www has changed, and the key for the according IP address xxx.xxx.xxx.xxx is unknown. This could either mean that DNS SPOOFING is happening or the IP address for the host and its host key have changed at the same time. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Please contact your system administrator. Add correct host key in /home/../BENUTZERNAME/.ssh/known_hosts to get rid of this message. Offending key in /home/../BENUTZERNAME/.ssh/known_hosts:4 RSA host key for www has changed and you have requested strict checking. Host key verification failed. lost connection
Wichtig ist die Zeile, die mit „Offending“ beginnt. Hier steht der Dateiname und nach dem Doppelpunkt (im oberen Beispiel 4) steht die Zeilennummer, die geändert werden muss. Aus dieser Datei muss der alte Schlüssel rausgelöscht werden. Dazu einfach die komplette Zeile löschen.
Alternativ kann man folgendes Kommando verwenden:
sed <ZEILENNUMMER>d -i /home/lehrstuhl/ag-<LEHRSTUHL>/<BENUTZERNAME>/.ssh/known_hosts
Beispiel:
sed 271d -i /home/lehrstuhl/ag-euler/euler/.ssh/known_hosts
SCP GUIs (Graphische Oberflächen für SCP)
Als graphische Tools bieten sich FileZilla und Winscp(Windows) an.
rsync
Auf dem Rechner www ist das Programm rsync installiert mit dem sich ein lokales Verzeichnis mit einem auf www synchronisieren lässt. Der Aufruf erfolgt so:
rsync -avz /home/mypath ag-xyz@www:/exports/ag/ag-xyz/
Hinweis(e): Der abschließende Schrägstrich für Verzeichnisse sorgt oft für Verwirrung: Lautet der Aufruf zum Beispiel rsync /home/mypath/Daten www:/var/backup/xyz/, überträgt Rsync das Verzeichnis „Daten“ zum Ziel, legt also /var/backup/xyz/Daten an. Steht im Aufruf hingegen /home/xyz/Daten/, sorgt der Schrägstrich dafür, dass nur der Inhalt von »Daten« übertragen wird. Eine Datei »~xyz/Daten/test.txt« wandert also gleich ins Zielverzeichnis und wird zu /var/backup/xyz/test.txt statt »…/xyz/Daten/test.txt«.
Auswahl wichtiger Parameter:
short | long | Desc |
---|---|---|
-v | verbose | ausgiebiger Bericht der gerade laufenden Bearbeitung |
-q | quiet | keine Ausgabe von Fehlermeldungen |
-a | archive | Zusammenfassung der Parameter -rlptgoD |
-r | recursive | Abgleichen mit allen Unterverzeichnissen |
-l | links | Kopieren der symlinks |
-p | perms | Übertragen der Zugriffssrechte |
-t | time | Übertragen des Zeitstempels |
-g | group | Übertragen der Gruppenrechte |
-o | owner | Übertragen der Benutzerrechte |
-n | Testparameter | Testparameter, die Befehle werden ausgeführt aber es wird nicht kopiert (Testlauf) |
-u | update | Bereits vorhadene Dateien werden nur bei neuerem Quelldatum kopiert |
-z | compress | compress file data during the transfer |
-E | execute | Attribut „ausführbar“ bleibt erhalten |
–delete | delete | Löscht nicht mehr vorhandene Dateien auf der Quelle auch auf dem Ziel (synchron) |
–exclude | exclude | Schließt Verzeichnisse von der Sicherung aus |
-S | –sparse | handle sparse files efficiently; e.g. timemachine on Mac creates sparse files |
rsync auf vfat formatierte Partitionen sichern
Inspiriert durch den Artikel von by Martin Monperrus
Mit rsync
kann man gut seine Daten sichern. Aber man braucht ein paar der erweiterten Parameter,
um von einem ext[2|3|4] filesystem auf einem vfat, fat16 oder fat32 ein Backup zu erstellen (z.B.: USB stick oder eine vorformatierte externe USB[2|3]-Festplatte):
#!/bin/bash SOURCE=/home/<user> DEST=/media/<dest> find $SOURCE -name "*%*" -or -name "*:*" read -p 'Hit Ctrl-C if too much "%" and ":" were found in filenames' rsync -a --no-o --no-p --no-g --safe-links --modify-window 1 --stats $SOURCE $DEST
–no-o
# vfat unterstützt owners nicht!
–no-g
# vfat unterstützt keine groups
–no-p
# vfat unterstützt keine Unix permissions
–modify-window 1
# das fat filesystem „represents times with a 2-second resolution“ (siehe: rsync manual)
–safe-links
# vfat kennt keine „symbolic links“
–stats
# give some file-transfer stats
Im Falle von ntfs filesystem müssen die Parameter nochmals angepasst werden.
Beachten sie das vfat
keine Dateinamen mit '%' oder ':' kennt.
Um die Situation vor dem rsync Lauf zu klären sollte man vorher danach suchen: find . -name „*%*“ -or -name „*:*“
unison
„Unison ist ein Synchronisierungsprogramm für Unix/Linux, Windows, Mac OS X, Solaris und einige andere Betriebssysteme. Es gleicht Daten zwischen zwei Computern (oder zwei Verzeichnissen auf einem Computer) ab. Durch den Vergleich der Daten auf beiden Rechnern künnen Unterschiede gefunden werden und beide Computer auf den gleichen Stand gebracht werden. Dieser Abgleich funktioniert beidseitig, das heißt auch wenn auf beiden Systemen parallel Daten geändert wurden [Quelle:Wikipedia]
Unison sucht unter ~/.unison nach der Konfigurationsdatei „default.prf“. (Natürlich kann unison auch nur per Parameter von der Bash aufgerufen werden.) Es folgt eine Beispiel .prf, die folgende Dinge tut:
- Das lokale Homeverzeichnis wird per ssh auf den Rechner [hostname] synchronisiert
- Der Job lauft automatisch ohne Rueckfragen.
- Versionskonflikte werden zu Gunsten neuerer Datei gelöst
- Die letzte Zugriffszeit einer Datei wird beibehalten
- Es werden mehrere Dateinamen und Verzeichnisse von der Synchronisierung ausgenommen
- (z.B.: werden Dateien im Mülleimer und temporäre Dateien ignoriert) Alle Aktivitäten werden in der Logdatei „unison.log“ festgehalten
Es sollte ein extra Ordner für das Synchronisieren angelegt werden damit nicht ungewollte Daten synchronisiert werden müssen. Eine andere Möglichkeit ist das Auslassen von bestimmten Datentypen (Mutlimediadateien).
# Roots of the synchronization root = /home/[username]/[unterordner] root = ssh://[username]@[hostname]:[port]//home/[user]/[unterordner] #the user interface will ask no questions at all batch=true ##Unison always to resolve conflicts prefer=newer ##file modification times (but not directory modtimes) are propagated times=true # Paths to synchronize # Some regexps specifying names to ignore ignore = Name temp.* ignore = Name *~ ignore = Name .*~ ignore = Name *.o ignore = Name *.tmp ignore = Name *.run ignore = Name unison.log ignore = Name trash.desktop ignore = Name Sent ignore = Name Trash # Some regexps specifying paths to ignore ignore = Path Mail ignore = Path mail ignore = Path Desktop ignore = Path .* ignore = Path unison_backups # Use this command for displaying diffs diff = diff -y -W 79 --suppress-common-lines # Log actions to the terminal log = true logfile = unison.log
Hinweis(e):
- Alle Parameter mit genauer Erklärung finden sich im Unison-Handbuch
- Bitte darauf achten, die gleichen Version wie auf dem Server zu benutzen. Andernfalls bricht Unison mit folgender Fehlermeldung ab:
Fatal error: Received unexpected header from the server: expected "Unison 2.40\n" but received "Unison 2.32\n\000\000\000\000",
Quota
Der verfügbare Festplattenspeicher im /home ist für jeden Benutzer per quota auf 70GB (Stand 2014) begrenzt. Der noch zur Verfügung stehende Speicher lässt sich mit folgendem Kommando abfragen:
quota -s