Forum: PC-Programmierung Ubuntu: Woher weiß, wie eine Partition heißt??


von Karl He. (Gast)


Lesenswert?

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?

von G. P. (gpnt)


Lesenswert?

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.

: Bearbeitet durch User
von [in sahne] (Gast)


Lesenswert?

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.

von DPA (Gast)


Lesenswert?

"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.

von Karl He. (Gast)


Lesenswert?

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

von [in sahne] (Gast)


Lesenswert?

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.

von DPA (Gast)


Lesenswert?

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.

von Karl He. (Gast)


Lesenswert?

[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!

von Fachmann (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.