Hallo, ein Programm in einem Canonical Ubuntu Linux soll alle Dateien
eines vorgegebenen Ordner "XXX", die auf einer FAT16 Partition liegen
und die nicht Systempartition des Linux ist, auf einen USB Stick
kopieren. Dabei soll in einem vorgegebenen Ordner "YYY" ein Ordner
"ZZZDatumUhrzeit" erzeugt werden und alle Dateien aus dem Ordner XXX
dorthin kopiert werden.
Unter MSDOS hätte ich eine *.bat Datei eröffnet und die entsprechenden
Befehle dort hinein geschrieben. Durch Aufruf der Datei wäre dann das
Gewünschte ausgeführt worden. Was muss ich lernen, um bei Linux solche
Datei zu erzeugen und diese als anklickbares Icon auf dem Desktop
auszuführbar zu machen? Links auf den entsprechenden Lehrstoff sind
willkommen.
Gerd J. schrieb:> Hallo, ein Programm in einem Canonical Ubuntu Linux soll alle Dateien> eines vorgegebenen Ordner "XXX", die auf einer FAT16 Partition liegen> und die nicht Systempartition des Linux ist, auf einen USB Stick> kopieren. Dabei soll in einem vorgegebenen Ordner "YYY" ein Ordner> "ZZZDatumUhrzeit" erzeugt werden und alle Dateien aus dem Ordner XXX> dorthin kopiert werden.>> Unter MSDOS hätte ich eine *.bat Datei eröffnet und die entsprechenden> Befehle dort hinein geschrieben. Durch Aufruf der Datei wäre dann das> Gewünschte ausgeführt worden. Was muss ich lernen, um bei Linux solche> Datei zu erzeugen und diese als anklickbares Icon auf dem Desktop> auszuführbar zu machen? Links auf den entsprechenden Lehrstoff sind> willkommen.
Karl schrieb:> Neben Bash-Skripten hast du unter Linux meist auch Python installiert.> Du kannst also auch ein Python-Skript schreiben.>> http://www.python-kurs.eu/os_modul_shell.php
Ist halt nur ein bisschen löt, daß das Modul "os" gar keinen Befehl
enthält, der Verzeichnisse rekursiv kopieren kann. Was willste da
machen? Dir erst mit os.walk() einen Verzeichnisbaum generieren oder
Dich mit os.path.walk() durchfräsen? Dann doch lieber shutil.copytree()
-- das genau das macht, was "cp -R" in der Bash auch tut.
Karl Käfer schrieb:> Ist halt nur ein bisschen löt, daß das Modul "os" gar keinen Befehl> enthält, der Verzeichnisse rekursiv kopieren kann.
rekursiv war nicht gefragt
Karl Käfer schrieb:> Was willste da> machen?
Im konkreten Fall würde ich googeln: python Dateien kopieren rekursiv.
Da gibt es sicher Treffer:
http://python.haas.homelinux.net/python_kapitel_17_007.htm
Die Antwort hast du ja bereits genannt.
Wo ist jetzt dein Problem? Ich habe als Denkanstoß auf Python
hingewiesen. Mansche Leute werden darin Lösungen finden, andere, wie du,
nur Probleme.
Spätestens, wenn der TO die Verzeichnisse nicht immer händisch eingeben
will, sondern dazu eine GUI nutzen möchte, ist Python der bequemere weg.
Gerd J. schrieb:> Hallo, ein Programm in einem Canonical Ubuntu Linux soll alle Dateien> eines vorgegebenen Ordner "XXX", die auf einer FAT16 Partition liegen> und die nicht Systempartition des Linux ist, auf einen USB Stick> kopieren. Dabei soll in einem vorgegebenen Ordner "YYY" ein Ordner> "ZZZDatumUhrzeit" erzeugt werden und alle Dateien aus dem Ordner XXX> dorthin kopiert werden.
geht mit der eierlegenden wollmilchsau rsync - vorteil ist, daß das
zielverzeichnis (mit datum) auch direkt angelegt werden kann.
rsync -Wav --progress XXX/ YYY/ZZZ$(date +%Y.%m.%d-%H.%M)/
Gerd J. schrieb:> Was muss ich lernen, um bei Linux solche> Datei zu erzeugen und diese als anklickbares Icon auf dem Desktop> auszuführbar zu machen?
ISBN 978-3446142732, zumindest für den ersten Teil der Frage.
Das Buch ist zwar etwas in die Jahre gekommen, nach meiner Einschätzung
aber immer noch eine der besten Einführungen in die Unix-Welt. Vor allem
hat es eine erstaunliche Progression. Es beginnt beim Urschleim (Wie
logge ich mich ein?) und endet mit dem ersten eigenen (kleinen)
Compiler. (Man muss es ja nicht bis zum Ende lesen.) Es sollte auch in
der gut sortierten Bibliothek Deines Vertrauens zu haben sein.
Karl Käfer schrieb:> Ist halt nur ein bisschen löt, daß das Modul "os" gar keinen Befehl> enthält, der Verzeichnisse rekursiv kopieren kann.
Python für sowas zu verwenden spielt seine Stärke erst wirklich aus wenn
noch etwas verzwickte Programmlogik hinzukommt die mehr mit den Dateien
machen soll als nur von A nach B zu kopieren, zum Beispiel sie lesen,
anhand dessen irgendwelche Entscheidungen treffen, irgendwelche
Parameter errechnen für ein Konvertierungsprogramm und sie dann da durch
jagen (aber bitte immer nur so viele auf einmal wie Du Kerne in der CPU
hast), solche Sachen halt. Sowas möchte man nicht in Bash erledigen
(Grusel, Schauder).
Wurde für sowas nicht Perl entwickelt? :)
Wikipedia: ... Der Linguist Larry Wall entwarf sie 1987 als Synthese aus
C, awk, den Unix-Befehlen und anderen Einflüssen...
Für den "Klickibunti"-Teil der Frage:
https://wiki.ubuntuusers.de/.desktop-Dateien/
Das kommt aber erst, nachdem dein Script funktioniert.
Vorteil: Sobald du bemerkt hast, dass der Desktop kein so toller Ort für
deinen Plan ist (Tipp: Windows-Gewohnheiten ablegen!), kannst du dein
Werk in den launcher verschieben oder seine Zugänglichkeit über die dash
deutlich verbessern.
Bernd K. schrieb:> Karl Käfer schrieb:>> Ist halt nur ein bisschen löt, daß das Modul "os" gar keinen Befehl>> enthält, der Verzeichnisse rekursiv kopieren kann.>> Python für sowas zu verwenden spielt seine Stärke erst wirklich aus wenn> noch etwas verzwickte Programmlogik hinzukommt die mehr mit den Dateien> machen soll als nur von A nach B zu kopieren, zum Beispiel sie lesen,> anhand dessen irgendwelche Entscheidungen treffen, irgendwelche> Parameter errechnen für ein Konvertierungsprogramm und sie dann da durch> jagen (aber bitte immer nur so viele auf einmal wie Du Kerne in der CPU> hast), solche Sachen halt. Sowas möchte man nicht in Bash erledigen> (Grusel, Schauder).
Du hast gesehen, daß sich mein Beitrag auf den Vorschlag von "Karl
(Gast)" bezog und ich vorher einen simplen Shellbefehl vorgeschlagen
habe? ;-)
Karl Käfer schrieb:> Du hast gesehen, daß sich mein Beitrag auf den Vorschlag von "Karl> (Gast)" bezog und ich vorher einen simplen Shellbefehl vorgeschlagen> habe? ;-)
Wahrscheinlich hat er das genauso übersehen, wie du übersehen hast, dass
der Vorschlag von Python von mir eine ALTERNATIVE zum Bash-Skript war.
Ästhet schrieb:> Sobald du bemerkt hast, dass der Desktop kein so toller Ort für> deinen Plan ist (Tipp: Windows-Gewohnheiten ablegen!), kannst du dein> Werk in den launcher verschieben oder seine Zugänglichkeit über die dash> deutlich verbessern.
Das Ganze soll von angelernten Benutzern bedient werden, die
möglicherweise im Privatleben keinen Computer kennen. Sie sollen auf dem
Desktop zwei Icons finden, die das Kopieren von Dateien auslösen. Linux
wird hier parallel zu einem proprietären Closed Source MSDOS Programm
(ohne Windows) installiert, um dessen aktuelle Konfiguration von Zeit zu
Zeit auf einem USB Stick zu sichern bzw. zurückzuspielen. Diese zwei
Klicks sind auch die einzige Bestimmung der Linux Installation. Mehr
wird da nicht ausgeführt.
Wenn ich es hinbekomme, könnte das Ganze auch von einem Live-Stick
gestartet werden, so dass sich die parallele Linux Installation
erübrigt.