Ein PC hat eine Festplatte mit SATA Schnittstelle und zwei Partitionen.
Auf der einen ist ein MSDOS 6.22 installiert, auf der anderen ein
Ubuntu. Wenn das MSDOS hochfährt, hat seine Partion die Bezeichnung
"c:". Wenn das Ubuntu hochfährt, soll der Anwender gefragt werden, ob er
"Sichern" oder Wieder- "Herstellen" möchte. Beim "Sichern" soll ein
bestimmter Ordner von der MSDOS Partition in einen bestimmten Ordner
eines einzusteckenden USB-Sticks kopiert werden. Beim "Herstellen" soll
ein bestimmter Ordner vom USB-Stick in einen bestimmten Ordner der MSDOS
Partition kopiert werden. Falls der Ordner auf dem USB-Stick nicht
existiert, soll der Bediener darauf hingewiesen werden, dass er jemand
benachrichtigt. Falls der USB-Stick nicht steckt, soll der Bediener zum
Einstecken aufgefordert werden. Der spätere Bediener hat keine Ahnung
von nichts. Er weiß nur, ob er "Sichern" oder "Herstellen" wählen soll.
Den Rest muss der PC sicherstellen.
Ich muß also zwei Kopierbefehle der Form cp QuellPfad/Ordner
ZielPfad/Ordner vorbereiten, der nach der Auswahl von "Sichern" bzw.
"Herstellen" aufgerufen wird. Der Pfad beginnt dann mit der
Partitionsbezeichnung. Aber woher weiß ich, welche
Partitionsbezeichnungen nach dem Hochfahren des Rechners bzw. Einstecken
des USB-Sticks die MSDOS und Ubuntu Partition der Festplatte und welche
der USB-Stick hat?
fdisk -l
Damit siehst du welcher Datenträger durch welche Gerätedatei
repräsentiert wird.
Der Zugriff auf diese Datenträger erfolgt, indem die Datenträger durch
die Gerätedateien ins Dateisystem "eingehängt" werden.
Nehmen wir mal folgende Zuordnung an:
/dev/sda1 -> MSDOS
/dev/sda2 -> Ubuntu
/dev/sdb1 -> USB-Stick
Dann wird die Ubuntu-Partition, also /dev/sda2, auf jeden Fall mal im
root-Verzeichnis ( / ) eingehängt sein.
MSDOS und der USB Stick werden - sofern automatisch eingehängt, irgendwo
im /media-Verzeichnis sein. Einfach mal nachschauen, was da so drin ist,
denn der Ordnername hängt von dem Partitionsname oder der Seriennummer
ab.
Alternativ kannst du die Laufwerke auch manuell in fest vordefinierte
Ordner einhängen.
z.B. /dev/sda2 -> /mnt/msdos
und /dev/sdb1 -> /mnt/usbstick
Dann kannst du mit cp /mnt/msdos/myfile.txt /mnt/usbstick/ bspw. die
Datei "myfile.txt" von der msdos-Partition auf den USB Stick kopieren.
mount reicht doch, fdisk liefert zuviel unnütze Information.
Wenn einer einzelne Dateien u. Verzeichnisse kopieren will braucht er
den Namen unter dem das im Dateisystem eingehängt ist um es damit
anzusprechen, den liefert fdisk nicht braucht also noch einen Schritt
den kann man sich aber sparen.
"blkid" und die "/dev/disk/" symlinks von [euv]dev dürften für dich
relevant sein. Über welche Informationen du die Laufwerke erkennen
willst, musst du selbst wissen.
G. P. schrieb:> Der Zugriff auf diese Datenträger erfolgt, indem die Datenträger durch> die Gerätedateien ins Dateisystem "eingehängt" werden.> Nehmen wir mal folgende Zuordnung an:> /dev/sda1 -> MSDOS> /dev/sda2 -> Ubuntu> /dev/sdb1 -> USB-Stick
Kann ich jetzt mit
cp /dev/sda1/myfile.txt /dev/sdb1/
kopieren?
Ist die Zuweisung zu sda1, sda2, sdb1 das, was man Einhängen/Mounten
nennt? Oder kommt das erst danach?
Ist die Zuweisung
1) nach jedem Hochfahren
2) bei jedem Rechner mit gleicher Hardware (Motherboard, RAM,
Festplatte)
gleich oder kann sie auch anders sein, beispielsweise so:
/dev/sdb1 -> MSDOS
/dev/sdb2 -> Ubuntu
/dev/sda1 -> USB-Stick
Karl He. schrieb:> Kann ich jetzt mit> cp /dev/sda1/myfile.txt /dev/sdb1/> kopieren?>
Nein.
> Ist die Zuweisung zu sda1, sda2, sdb1 das, was man Einhängen/Mounten> nennt? Oder kommt das erst danach?
Danach.
---
Das ganze spielt sich doch auschliesslich unter linux ab.
Nur wenn das läuft sollen obige Aktionen ausgeführt werden, richtig?
Die Partitionen und deren Bezeichner sind dabei erstmal recht egal schon
wenn man davon ausgehen kann das der stick beim einstecken automatisch
gemounted wird, IDs interessieren ggf. nur wenn geprüft werden soll ob
ein ganz bestimmter Datenträger eingehängt wurde.
Alles was im filesystem aktuell erreichbar ist steht in /etc/mtab, mount
oder cat /etc/mtab zeigt die mountpoints über die das entsprechende
Dateisystem des Datenträgers erreichbar ist.
Wenn du drauf warten willst bis sich veränderungen zeigen, einer den
Speicherstick einsteckt, könnste mit z.B. mit inotifywait /etc/mtab
überwachen wenn sich was tut prüfst du auf existenz des Ordners,
wenn das ein shellscript werden soll.
Karl He. schrieb:> Kann ich jetzt mit> cp /dev/sda1/myfile.txt /dev/sdb1/> kopieren?
/dev/sdb1 ist ein block device file. Dieses repräsentiert den Speicher
der ersten Partition von /dev/sdb (welches den gesamten Speicher des
jeweiligen Speichermediums repräsentiert.).
Versuche nicht das obere cp Kommando ohne den / am ende auszuführen.
Früher ersetzte das nur das device file, aber ich habe gehört dass es
mittlerweile so clever ist ins device file zu schreiben (auch wenn ich
das noch nie getestet habe), und das würde das Dateisystem dort drin
überschreiben, was nicht so gut wäre.
Karl He. schrieb:> Ist die Zuweisung zu sda1, sda2, sdb1 das, was man Einhängen/Mounten> nennt? Oder kommt das erst danach?
Eine Zuweisung ist kein fester Fachbegriff in diesem Zusammenhang. Wir
meinen damit nur, das etwas zu etwas anderem gehört, aber wir beziehen
uns nicht alle auf die selben Sachen.
Ich interpretierte es als Informationen zu den Laufwerken, so dass man
zweifelsfrei sagen kann welches Laufwerk zu was gehört. Für diese
Zuordnung kann man aus die UUID, das Label, den physischen Pfad, etc.
zugreifen. blkid kann diese Informationen anzeigen, und in /dev/disk/
erstellt [euv]dev immer Verzeichnisse mit Links auf die Device files, so
dass man auf diese über deren UUID oder Label, etc. zugreiffen kann.
Mounten bezeichnet das einhängen eines Dateisystems ins Filesystem. Du
kannst also den Inhalt des Dateisystems in /dev/sdb1 in einem beliebigen
Verzeichniss, z.B. /mnt/whatever/ einhängen. Diesen Vorgang bezeichnet
man als Mounten. Man nutzt dafür das mount Kommando und/oder die
/etc/fstab.
[in sahne] schrieb:> Das ganze spielt sich doch auschliesslich unter linux ab.> Nur wenn das läuft sollen obige Aktionen ausgeführt werden, richtig?
Genau!
Karl He. schrieb:> soll der Anwender gefragt werden, ob er> "Sichern" oder Wieder- "Herstellen" möchte.
Das ist ja offensichtlich nichts privates, sondern Business.
Mein Stundensatz beträgt 280,- Netto.