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.
linux
command-line-interface
rsync
copy
Kyle West
quelle
quelle
rsync -a --include='*/' --exclude='*' ${source} ${destination}
.quelle
Ein anderer Ansatz ist mit find und mkdir :
Stellen Sie einfach sicher, dass TARGET bereits vorhanden ist, oder verwenden Sie die Option -p von mkdir.
quelle
Sie können auch tun:
Die Kraft der Einfachheit;)
quelle
Ebenso mit (GNU) tar:
Sie brauchen nicht wirklich die
-print0
Befehlszeile auf der Suche oder-0
auf 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ützlichxargs
, wenn durch Leerzeichen getrennte Dateinamen gelesen werden (und daher keine Dateien / Verzeichnisse mit Leerzeichen in ihren Namen ohne behandelt werden-0
).quelle
quelle
Würde alle Dateien mit Hardlinks kopieren. Gleiche Struktur, gleiche Berechtigungen. (Hinweis: Feste Links, daher geht kein Speicherplatz verloren.)
quelle
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!
quelle
@source
und@destination
Hinweise für den Leser sind, aber trotzdem kann dies nicht funktionieren.