Wie kopiere ich einen Verzeichnisbaum, aber nicht die Dateien in Linux?


17

Ich möchte ungefähr 200 Verzeichnisse und Unterverzeichnisse von einem Ort zum anderen kopieren, aber ich möchte nicht die Tausenden von Dateien in diesen Verzeichnissen kopieren. Ich bin auf Linux.

Hinweis: Ich habe nicht genügend Speicherplatz, um alles zu kopieren und dann alle Dateien zu löschen.

Antworten:




5

Ein anderer Ansatz ist mit find und mkdir :

find SOURCE -type d -exec mkdir TARGET/{} \;

Stellen Sie einfach sicher, dass TARGET bereits vorhanden ist, oder verwenden Sie die Option -p von mkdir.


3

Sie können auch tun:

find inputdir -type d | cpio -pdumv destdir

Die Kraft der Einfachheit;)


1

Ebenso mit (GNU) tar:

find some/dir -type d -print |
tar --no-recursion -T- -c -p -f- |
(cd another/dir && tar -x -p -f-)

Sie brauchen nicht wirklich die -print0Befehlszeile auf der Suche oder -0auf der rsync-Befehlszeile, es sei denn, Sie haben Dateinamen, die Newline-Zeichen enthalten (was möglich, aber höchst unwahrscheinlich ist). Tar (und rsync und cpio) lesen Dateinamen Zeile für Zeile; Die Verwendung eines NULL-Abschlusszeichens ist meistens nützlich xargs, wenn durch Leerzeichen getrennte Dateinamen gelesen werden (und daher keine Dateien / Verzeichnisse mit Leerzeichen in ihren Namen ohne behandelt werden -0).



-1
cp -al 

Würde alle Dateien mit Hardlinks kopieren. Gleiche Struktur, gleiche Berechtigungen. (Hinweis: Feste Links, daher geht kein Speicherplatz verloren.)


Es ist nicht möglich, feste Links über Dateisystemgrenzen hinweg zu erstellen
MountainX für Monica Cellio

Es
stimmt

-1

ls -d * / @source: find. -type d -print0> dirs.txt @ziel: xargs -0 mkdir -p

Dadurch werden bei beiden Befehlen anstelle von Leerzeichen Nullen als Trennzeichen verwendet. Beachten Sie, dass die Reihenfolge von -type d und -print0 wichtig ist!


Dies ist nicht klar und scheint falsch. Es scheint, dass die @sourceund @destinationHinweise für den Leser sind, aber trotzdem kann dies nicht funktionieren.
Law29
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.