Wie scp ich Dateien mit einer Größe von weniger als x?

13

Ich entwickle gerade etwas auf meinem Laptop und scp'le die Dateien auf einen Hochleistungs-PC (einen Server ohne Monitor). Aus Faulheit mache ich das gerade (auf dem Laptop):

scp -r ~/project/* server:~/project/

Bei einigen Dateien im Projektverzeichnis handelt es sich jedoch um Protokolldateien und Auslagerungsdateien, die ich nicht senden muss, was manchmal ein Gig oder so sein kann. Was ich möchte, ist ein netter sauberer Befehl, der im Grunde das Gleiche tut (alle Dateien im Projekt und seinen Unterverzeichnissen überträgt), aber nur Dateien unter einem bestimmten Schwellenwert für die Dateigröße sendet, wie z. B. 100 MB. Ich habe nur wenig Erfahrung mit bash und überhaupt nicht mit regexp, daher habe ich keine Ahnung, wie ich das ohne eine verschlungene Methode wie das Importieren von sys in Python und das Verwenden einer Reihe von ifs und Vergleichen machen kann.

iammax
quelle

Antworten:

27

Sie können den Befehl 'rsync' verwenden, der eine Option zum Steuern der auszuschließenden Dateigröße bietet.

rsync -rv --max-size=100m /path/in/local/ server:~/project/

von " man rsync ",

--max-size=SIZE    don't transfer any file larger than SIZE

Aktualisierte Antwort : Schließen Sie einfach die Protokolldateien mit der Option 'rsync' --exclude aus (siehe unten)

rsync -rv --exclude='*.log' --max-size=100m /path/in/local/ server:~/project/

oder Sie können die Befehlskombination 'find' mit 'scp' verwenden und die Dateigrößenbeschränkung mit ihrer -sizeOption angeben . Verwenden Sie ! -name '*.log'diese Option, um bestimmte Dateien auszuschließen, die mit 'log' enden.

find /path/in/local -type f ! -name '*.log' -size -100m -exec scp '{}' server:~/project/ \;
αғsнιη
quelle
1
Ein Hinweis für das OP: rsyncähnelt, scpist aber effizienter, da Änderungen nur übertragen werden, wenn eine Datei geändert wird.
Paddy Landau
Seien Sie vorsichtig mit der Reihenfolge der Verzeichnisse alsrsync -rv --max-size SOURCE DESTINATION. Ich habe nicht richtig gelesen, und das hat sehr schlimme Konsequenzen.
toto_tico