Dateien kopieren unter Linux

Gast #4556742
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.
Gast #4556762
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')
Gast #4556775
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.
Gast #4556810
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.
Gast #4556852
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
#4557041
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.
#4557138
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).
Gast #4558066
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? ;-)
Gast #4558077
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.
Gast #4568134
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren