Forum: PC-Programmierung Dateien kopieren unter Linux


von Gerd J. (Gast)


Lesenswert?

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.

von Link (Gast)


Lesenswert?


von Bitwurschtler (Gast)


Lesenswert?


von Karl (Gast)


Lesenswert?

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

von Karl Käfer (Gast)


Lesenswert?

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.
1
cp -R XXX YYY/ZZZ$(date +'%F_%T')

von Karl Käfer (Gast)


Lesenswert?

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.

von Karl (Gast)


Lesenswert?

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.

von c.m. (Gast)


Lesenswert?

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)/
1
camikusch@devel:/tmp/tt$ mkdir XXX
2
camikusch@devel:/tmp/tt$ mkdir YYY
3
camikusch@devel:/tmp/tt$ cp /etc/a*conf XXX/.
4
camikusch@devel:/tmp/tt$ rsync -Wav XXX/ YYY/ZZZ$(date +%Y.%m.%d-%H.%M)/
5
sending incremental file list
6
created directory YYY/ZZZ2016.04.25-16.59
7
./
8
adduser.conf
9
appstream.conf
10
avrdude.conf
11
12
sent 482,001 bytes  received 122 bytes  964,246.00 bytes/sec
13
total size is 481,624  speedup is 1.00
14
camikusch@devel:/tmp/tt$ find
15
.
16
./YYY
17
./YYY/ZZZ2016.04.25-16.59
18
./YYY/ZZZ2016.04.25-16.59/avrdude.conf
19
./YYY/ZZZ2016.04.25-16.59/appstream.conf
20
./YYY/ZZZ2016.04.25-16.59/adduser.conf
21
./XXX
22
./XXX/avrdude.conf
23
./XXX/appstream.conf
24
./XXX/adduser.conf

von A. H. (ah8)


Lesenswert?

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.

von Bernd K. (prof7bit)


Lesenswert?

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

von Besucher (Gast)


Lesenswert?

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

von Ästhet (Gast)


Lesenswert?

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.

von Bitwurschtler (Gast)


Lesenswert?

A. H. schrieb:
> ISBN 978-3446142732, zumindest für den ersten Teil der Frage.

Nimm das Orginal und nicht den Abklatsch:

http://shop.oreilly.com/product/9780596003302.do

von Karl Käfer (Gast)


Lesenswert?

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? ;-)

von Karl (Gast)


Lesenswert?

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.

von A. H. (ah8)


Lesenswert?

Bitwurschtler schrieb:
> A. H. schrieb:
>> ISBN 978-3446142732, zumindest für den ersten Teil der Frage.
>
> Nimm das Orginal und nicht den Abklatsch:
>
> http://shop.oreilly.com/product/9780596003302.do

Grundsätzlich würde ich Dir ja zustimmen. Das Original ist aber das 
hier: ISBN 978-0139376818.

von Gerd J. (Gast)


Lesenswert?

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

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.