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?

macek
quelle

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.

John T
quelle
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.

amit singh
quelle