Ich möchte alle Dateien in einem Verzeichnis mit Ausnahme einiger Dateien in einem bestimmten Unterverzeichnis kopieren. Ich habe festgestellt, dass cp
Befehl hatte nicht die --exclude
Option. Wie kann ich dies also erreichen?
Antworten
Zu viele Anzeigen?Ausweitung der mvds's Kommentar , das funktioniert bei mir
cd dotfiles
tar -c --exclude .git --exclude README . | tar -x -C ~/dotfiles2
rsync
ist in der Tat ziemlich knifflig. Man muss mehrere Tests durchführen, damit es funktioniert.
Angenommen, Sie möchten Folgendes kopieren /var/www/html
a /var/www/dev
aber müssen ausschließen /var/www/html/site/video/
Verzeichnis, vielleicht wegen seiner Größe. Der Befehl würde lauten:
rsync -av --exclude 'sites/video' /var/www/html/ /var/www/dev
Einige caveat :
-
Der letzte Schrägstrich
/
in der Quelle benötigt wird, da sonst auch das Quellverzeichnis und nicht dessen Inhalt kopiert wird und zu/var/www/dev/html/xxxx
was vielleicht nicht das ist, was Sie wollen. -
Die
--exclude
Pfad ist relativ direkt an die Quelle. Selbst wenn Sie den vollständigen absoluten Pfad angeben, wird es nicht funktionieren. -
-v
steht für ausführlich,-a
ist für den Archivierungsmodus, d.h. Sie wollen Rekursion und wollen fast alles bewahren.
24 Stimmen
rsync?
11 Stimmen
tar -c | tar -x
?2 Stimmen
@mvds, ich stimme Ihnen zu, tar mit '--exclude' zu verwenden ist eine gute Idee.
4 Stimmen
Mögliches Duplikat von Ordner rekursiv kopieren, einige Ordner ausschließen