Verwenden Sie rsync, um alle Dateien mit Ausnahme bestimmter Dateinamen mit einer bestimmten Erweiterung zu kopieren


28

Ich habe zwei gleich große Flash-Karten und möchte den Inhalt anhand der folgenden Regeln auf die anderen kopieren:

  1. Ich möchte, dass alle Verzeichnisse und Unterverzeichnisse vorhanden sind
  2. Ich möchte Dateien vom Typ .FOO, .BAR und .ZIM ausschließen (alle anderen Dateien werden kopiert)
  3. Bonus: Es wäre cool, wenn die Dateinamen so ausgegeben würden, wie sie kopiert werden, da etwa 8 GB an Informationen kopiert werden

Könnte dies irgendwie mit "Finden" geschehen?

Antworten:


41

Dies wäre bei Verwendung von rsync mit seinem Switch erheblich einfacher .--exclude

rsync -av --exclude='*.FOO' --exclude='*.BAR' --exclude='*.ZIM' /source /dest

Der -vSchalter liefert eine ausführliche Ausgabe, bei der die Dateien synchronisiert werden.


Kleine Folge hier: Die Kopie ist fertig und / src / * befindet sich jetzt in / dest / src / *. Wie kann man mit rsync / src / * in / dest / * holen?
macek

Versuchen Sie/source/ /dest
John T

Das geht nicht. Ich sehe immer noch, dass * .FOO-Dateien kopiert werden.
Jake

Es wird festgelegt, wie Sie den Pfad angeben sollen --exclude. Wenn Sie Probleme damit haben, lesen Sie diese Antwort .
Totymedli

0

Wenn Sie eine große Anzahl von Erweiterungen ausschließen möchten, können Sie eine Datei erstellen und alle auszuschließenden Erweiterungen oder Dateien aufschreiben. Verwenden Sie nur eine Ausschlussoption, um dies zu vereinfachen.

rsync -ravz --exclude = '. / abc, txt' / source / dest

Es ist immer gut, z für die Komprimierung und die Option r zu verwenden, wenn Sie rekursiv kopieren müssen.

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.