Ich versuche, Dateien mit tar zu archivieren und Dateien zu ignorieren, die größer als 100 MB sind. Ist das möglich?
PS: Ich muss keinen Teer verwenden.
quelle
Ich versuche, Dateien mit tar zu archivieren und Dateien zu ignorieren, die größer als 100 MB sind. Ist das möglich?
PS: Ich muss keinen Teer verwenden.
Ja, es gibt wahrscheinlich noch ein paar Möglichkeiten, dies zu tun, aber Sie sind wahrscheinlich am besten dran, find
da es so einstellbar ist.
find /path/to/dir -size -100M | xargs tar cvf archive.tar
oder
tar cvf archive.tar $(find /path/to/dir -size -100M)
Wenn der aktuelle Ordner andere Verzeichnisse enthält, die Sie nicht archivieren möchten, verwenden Sie:
find /path/to/dir -maxdepth 1 -size -100M | xargs tar cvf archive.tar
Gemäß den Kommentaren unten können Leerzeichen einige Fehler auslösen, aber bei meinen Tests schienen sie bei Verwendung der ersten Methode (an sich etwas seltsam) immer noch zum Archiv hinzugefügt zu werden. Wenn Sie sich jedoch Sorgen machen, können Sie den Befehl find auf korrigieren Ersetzen Sie Leerzeichen durch maskierte Versionen.
Wie immer gibt es eine Milliarde Möglichkeiten, dies zu tun.
find /path/ -size -100M | sed 's/ /\\ /g' | xargs tar cvf archive.tar
find /path/ -size -100M -exec echo '"{}"' \; | xargs tar cvf archive.tar
-print0
im Befehl find als auch im--null
Befehl tar verwendet werden, um mit diesem Szenario fertig zu werden.tar cvf myfile.tar
schlägt fehl. Ich empfehle dringend,tar rvf myfile.tar
Befehl zu verwenden.Schließen Sie einfach die großen Dateien wie folgt aus:
tar cf archive.tar / path / to / archive --exclude-from <(find / path / to / archive -size + 100M)
quelle