Gibt es einen einfachen Shell-Befehl/Skript, mit dem bestimmte Dateien/Ordner von der Archivierung ausgeschlossen werden können?
Ich habe ein Verzeichnis, das archiviert werden muss, mit einem Unterverzeichnis, das eine Reihe von sehr großen Dateien enthält, die ich nicht sichern muss.
Nicht ganz Lösungen:
El tar --exclude=PATTERN
mit dem angegebenen Muster übereinstimmt und diese Dateien ausschließt, aber ich brauche bestimmte Dateien und Ordner, die ignoriert werden sollen (vollständiger Dateipfad), da sonst gültige Dateien ausgeschlossen werden könnten.
Ich könnte auch den Befehl find verwenden, um eine Liste von Dateien zu erstellen und diejenigen auszuschließen, die ich nicht archivieren möchte, und die Liste an tar übergeben, aber das funktioniert nur bei einer kleinen Anzahl von Dateien. Ich habe mehrere zehntausend.
Ich glaube langsam, dass die einzige Lösung darin besteht, eine Datei mit einer Liste von auszuschließenden Dateien/Ordnern zu erstellen und dann rsync mit --exclude-from=file
um alle Dateien in ein tmp-Verzeichnis zu kopieren, und verwenden Sie dann tar, um dieses Verzeichnis zu archivieren.
Fällt jemandem eine bessere/effizientere Lösung ein?
EDIT: Karl Ma Die Lösung funktioniert gut. Das große Problem ist, dass die --exclude='./folder'
MUSS am Anfang des tar-Befehls stehen. Vollständiger Befehl (cd zuerst, damit die Sicherung relativ zu diesem Verzeichnis ist):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .