Rsync schließt Ordnerinhalte ein, aber übergeordnete Ordner aus

Rsync schließt Ordnerinhalte ein, aber übergeordnete Ordner aus

Ich habe das Internet vergeblich nach einer Antwort abgesucht... Ich versuche, dieses Ergebnis am Ziel zu erreichen

Media_Files
    Web
        Print

Meine Quelldateien sind

Media_Files
    Assets
        Web
            Print

Wie kann ich den Ordner ausschließen, löschen, entfernen oder filtern, Assetsaber die Web/PrintOrdner behalten rsync? Danke

Antwort1

Dazu müssen Sie zwei Schritte ausführen:

  1. Kopieren Sie alles außer Media_Files/Assets(vorausgesetzt, es befinden sich noch andere Dinge darunter Media_Files).
  2. Kopieren Media_Files/Assets/Web.

Der erste Schritt kann erfolgen mit

rsync -av --exclude=/Assets/ Media_Files/ destination

Madia_FilesDadurch wird das Verzeichnis (einschließlich Berechtigungen und anderer Metadaten) rekursiv (ausführlich) nach kopiert und eine Kopie von destinationerstellt (entfernen Sie das Ende des Quellpfads, um stattdessen zu erstellen ).destinationMedia_Files/destination/Media_Files

Das Assetsdirekt darunter liegende Verzeichnis Media_Fileswürde aufgrund des Ausschlussmusters ignoriert werden /Assets/.

Der zweite Schritt kann erfolgen durch

rysync -av Media_Files/Assets/Web destination

Das Fehlen von /am Ende des Quellpfads bedeutet, dass Webin eingefügt wird destination.

Media_Files/AssetsWenn Sie darüber hinaus noch weitere Dateien oder Verzeichnisse haben, Webdie Sie kopieren müssen, verwenden Sie stattdessen

rsync -av Media_Files/Assets/ destination

Dadurch wird alles Media_Files/Assets(einschließlich des WebVerzeichnisses und seines Inhalts) direkt in kopiert destination.


Sie können stattdessen die folgenden beiden Schritte ausführen:

  1. Machen Sie destinationeinegenauKopie von Media_Files, einschließlich Media_Files/Assets.
  2. Verschieben Sie den Inhalt von manuell, destination/Assetsden Sie verschieben destinationund löschen möchten destination/Assets.

Zusamenfassend:

rsync -av Media_Files/ destination
mv -i destination/Assets/* destination
rmdir destination/Assets

Die letzten beiden Befehle würden so geändert, dass nur der Inhalt verschoben wird, destination/Assetsden Sie behalten möchten (z. B. destination/Assets/Web), und der Rest entfernt wird (hier gehe ich davon aus, dass Sie alle sichtbaren Dateien und Verzeichnisse verschieben möchten und dass das AssetsUnterverzeichnis dadurch vollständig leer bleibt).

Antwort2

Sie können den folgenden Befehl verwenden, um das Ergebnis zu erzielen

rsync -azvP Mediendateien/Assets/Web-Mediendateien/

verwandte Informationen