diff --git a/foundation-core/src/main/kotlin/cloud/kubelet/foundation/core/features/backup/BackupCommand.kt b/foundation-core/src/main/kotlin/cloud/kubelet/foundation/core/features/backup/BackupCommand.kt index b20ba68..35d991e 100644 --- a/foundation-core/src/main/kotlin/cloud/kubelet/foundation/core/features/backup/BackupCommand.kt +++ b/foundation-core/src/main/kotlin/cloud/kubelet/foundation/core/features/backup/BackupCommand.kt @@ -14,8 +14,10 @@ import java.io.BufferedOutputStream import java.io.FileInputStream import java.io.FileOutputStream import java.io.IOException +import java.nio.file.FileSystems import java.nio.file.Files import java.nio.file.Path +import java.nio.file.Paths import java.time.Instant import java.util.concurrent.atomic.AtomicBoolean import java.util.zip.ZipEntry @@ -119,8 +121,10 @@ class BackupCommand( } private fun addDirectoryToZip(zipStream: ZipOutputStream, directoryPath: Path) { + val matchers = config.ignore.map { FileSystems.getDefault().getPathMatcher("glob:$it") } val paths = Files.walk(directoryPath) - .filter { path: Path? -> Files.isRegularFile(path) } + .filter { path: Path -> Files.isRegularFile(path) } + .filter { path -> !matchers.any { it.matches(Paths.get(path.normalize().toString())) } } .toList() val buffer = ByteArray(1024) val backupsPath = backupsPath.toRealPath() diff --git a/foundation-core/src/main/kotlin/cloud/kubelet/foundation/core/features/backup/BackupConfig.kt b/foundation-core/src/main/kotlin/cloud/kubelet/foundation/core/features/backup/BackupConfig.kt index cb2ffff..d143895 100644 --- a/foundation-core/src/main/kotlin/cloud/kubelet/foundation/core/features/backup/BackupConfig.kt +++ b/foundation-core/src/main/kotlin/cloud/kubelet/foundation/core/features/backup/BackupConfig.kt @@ -5,6 +5,9 @@ import kotlinx.serialization.Serializable @Serializable data class BackupConfig( val schedule: ScheduleConfig = ScheduleConfig(), + val ignore: List = listOf( + "plugins/dynmap/web/**" + ), val s3: S3Config = S3Config(), ) diff --git a/foundation-core/src/main/resources/backup.yaml b/foundation-core/src/main/resources/backup.yaml index acf0b7b..19c5244 100644 --- a/foundation-core/src/main/resources/backup.yaml +++ b/foundation-core/src/main/resources/backup.yaml @@ -10,6 +10,11 @@ schedule: # "0 3 ? * SUN" -> every Sunday at 3 AM cron: "" +# List of file patterns to ignore and ignore in the backup. +ignore: + # Dynmap web output. + - "plugins/dynmap/web/**" + # Configuration of S3 service to upload back-ups to. s3: # The access key ID from your S3-compliant storage provider.