staging.inyokaproject.org

Kompletten Ordnerpfad mit cp kopieren

Status: Ungelöst | Ubuntu-Version: Ubuntu GNOME 20.04 (Focal Fossa)
Antworten |

Paul80

Anmeldungsdatum:
29. April 2022

Beiträge: 3

Hallo zusammen

Wie kann man unter Linux am einfachsten folgende Ordnerpfade inkl. Untrordner kopieren? (inkl. darin enthaltene Dateien)

/QUELLE/A/B/C/01
/QUELLE/A/B/C/05
/QUELLE/A/B/C/07

Beim Ziel ist im Moment nur der Ordner ZIEL vorhanden, auf dem nach dem Kopiervorgang, die gleiche Ordnerstruktur vorhanden sein sollte:

/ZIEL/A/B/C/01
/ZIEL/A/B/C/05
/ZIEL/A/B/C/07

Kann mir da jemand weiterhelfen?

Vielen Dank.

Gruss

Paul

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Einfach rekursiv kopieren:

cp -r /QUELLE/A /ZIEL 

Paul80

(Themenstarter)

Anmeldungsdatum:
29. April 2022

Beiträge: 3

Aber ich möchte eben nur die Unterordner 01, 05 und 07 kopieren:

/QUELLE/A/B/C/01
/QUELLE/A/B/C/05
/QUELLE/A/B/C/07

Wenn ich dein Vorschlag ausführen würde:

1
cp -r /QUELLE/A /ZIEL 

würde auch 02-04 und 06 kopiert.

schollsky

Anmeldungsdatum:
3. Dezember 2012

Beiträge: 1730

Hallo Paul,

wenn Du derartige Operationen öfter vorhast, lohnt sich wohl die Benutzung eines grafischen Dateimanagers, z.B. Gnome-Commander. Der ist ab 22.04 wieder in den offiziellen Repositories. Unter 20.04 steht Dir z.B. auch der Double-Commander zur Verfügung.

HTH & Grüße

schollsky

dingsbums

Anmeldungsdatum:
13. November 2010

Beiträge: 3793

In 3 Schritten ginge das so:

1
2
3
cp --verbose --parents --recursive /QUELLE/A/B/C/{01,05,07} /ZIEL
mv --verbose /ZIEL/QUELLE/* /ZIEL
rmdir --verbose /ZIEL/QUELLE

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

rsync kann so etwas

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$ find QUELLE/
QUELLE/
QUELLE/A
QUELLE/A/B
QUELLE/A/B/C
QUELLE/A/B/C/01
QUELLE/A/B/C/02
QUELLE/A/B/C/03
QUELLE/A/B/C/04
QUELLE/A/B/C/05
QUELLE/A/B/C/06
QUELLE/A/B/C/07
QUELLE/A/B/C/08
QUELLE/A/B/C/09
QUELLE/A/B/C/10
$ find ZIEL/
ZIEL/
$ rsync -av --include=01 --include=05 --include=07 --exclude=0\* --exclude=1\* QUELLE/ ZIEL/
sending incremental file list
./
A/
A/B/
A/B/C/
A/B/C/01/
A/B/C/05/
A/B/C/07/

sent 187 bytes  received 43 bytes  460.00 bytes/sec
total size is 0  speedup is 0.00
$ find ZIEL/
ZIEL/
ZIEL/A
ZIEL/A/B
ZIEL/A/B/C
ZIEL/A/B/C/01
ZIEL/A/B/C/05
ZIEL/A/B/C/07

Noch eine elegantere Variante

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
$ rm -rf ZIEL/*
$ rsync -av --include=0[157] --exclude=[0-9]\* QUELLE/ ZIEL/
sending incremental file list
./
A/
A/B/
A/B/C/
A/B/C/01/
A/B/C/05/
A/B/C/07/

sent 187 bytes  received 43 bytes  460.00 bytes/sec
total size is 0  speedup is 0.00
$ find ZIEL/
ZIEL/
ZIEL/A
ZIEL/A/B
ZIEL/A/B/C
ZIEL/A/B/C/01
ZIEL/A/B/C/05
ZIEL/A/B/C/07

Paul80

(Themenstarter)

Anmeldungsdatum:
29. April 2022

Beiträge: 3

Hallo zusammen

Danke vielmals!!!

Ich glaube für mich passt folgender Vorschlag recht gut.

dingsbums schrieb:

In 3 Schritten ginge das so:

1
2
3
cp --verbose --parents --recursive /QUELLE/A/B/C/{01,05,07} /ZIEL
mv --verbose /ZIEL/QUELLE/* /ZIEL
rmdir --verbose /ZIEL/QUELLE

Bin es noch am Durchtesten 🤓

Weisst du gäbe es vielleicht eine Möglichkeit auch Dateien eines "Zwischen-Ordners" mit zu kopieren?

D.h. wenn im Ordner /QUELLE/A auch noch eine Datei vorhanden ist, z.B. /QUELLE/A/Autobus.txt wird sie aktuell mit folgendem Befehl natürlich nicht mitkopiert:

1
cp --verbose --parents --recursive /QUELLE/A/B/C/{01,05,07} /ZIEL

Aber ihr habt mir jetzt schon seeeehr geholfen.

Herzlichen Dank dafür!!!

Gruss

Paul

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Paul80 schrieb:

Weisst du gäbe es vielleicht eine Möglichkeit auch Dateien eines "Zwischen-Ordners" mit zu kopieren?

D.h. wenn im Ordner /QUELLE/A auch noch eine Datei vorhanden ist, z.B. /QUELLE/A/Autobus.txt wird sie aktuell mit folgendem Befehl natürlich nicht mitkopiert:

1
cp --verbose --parents --recursive /QUELLE/A/B/C/{01,05,07} /ZIEL

Die Lösung mit rsync würde das mit kopieren - wenn der Dateiname nicht von einem --exclude erfasst wird.

Mir ist noch aufgefallen, dass man die --exclude spezifischer machen sollte, damit auch wirklich nur Einträge aus einem bestimmten Pfad ausgeschlossen werden:

1
rsync -av --include=0[157] --exclude=A/B/C/[0-9]\* QUELLE/ ZIEL/
Antworten |