Added folder size file limit

Forge-1.14.4
Szum123321 2020-03-22 21:54:03 +01:00
parent a1bb7ed8f3
commit 5aebbdbf75
3 changed files with 25 additions and 7 deletions

View File

@ -32,7 +32,9 @@ dependencies {
include "io.github.cottonmc:Jankson-Fabric:2.0.0+j1.2.0"
include "io.github.cottonmc.cotton:cotton-logging:1.0.0-rc.4"
include "io.github.cottonmc.cotton:cotton-config:1.0.0-rc.7"
include "org.apache.commons:commons-compress:1.8.1"
include "org.apache.commons:commons-io:2.6"
// PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
// You may need to force-disable transitiveness on them.

View File

@ -41,6 +41,9 @@ public class ConfigHandler {
@Comment("\nMaximum age of backups to keep in seconds.\n if 0 then backups will not be deleted based on age \n")
public int maxAge = 0;
@Comment("\nMaximum size of backup folder in kilo bytes. \n")
public int maxSize = 0;
@Comment("\nCompression level \n0 - 9\n")
public int compression = 1;

View File

@ -24,19 +24,20 @@ import net.minecraft.server.MinecraftServer;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.text.TranslatableText;
import net.szum123321.textile_backup.TextileBackup;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.FileFilter;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.Objects;
public class BackupHelper {
public static void log(String s, ServerCommandSource ctx){
if(ctx != null)
ctx.sendFeedback(new TranslatableText(s), true);
ctx.sendFeedback(new TranslatableText(s), false);
if(TextileBackup.config.log)
TextileBackup.logger.info(s);
@ -81,11 +82,13 @@ public class BackupHelper {
public static void executeFileLimit(ServerCommandSource ctx){
File root = getBackupRootPath();
FileFilter filter = f -> f.getName().endsWith("zip");
if(root.isDirectory() && root.exists()){
if(TextileBackup.config.maxAge > 0){
LocalDateTime now = LocalDateTime.now();
for(File f: Objects.requireNonNull(root.listFiles())){
Arrays.stream(root.listFiles()).forEach(f ->{
if(f.exists() && f.isFile()){
LocalDateTime creationTime = LocalDateTime.from(
getDateTimeFormatter().parse(
@ -98,14 +101,15 @@ public class BackupHelper {
f.delete();
}
}
}
});
}
if(TextileBackup.config.backupsToKeep > 0 && Objects.requireNonNull(root.listFiles()).length > TextileBackup.config.backupsToKeep){
int var1 = Objects.requireNonNull(root.listFiles()).length - TextileBackup.config.backupsToKeep;
if(TextileBackup.config.backupsToKeep > 0 && root.listFiles().length > TextileBackup.config.backupsToKeep){
int var1 = root.listFiles().length - TextileBackup.config.backupsToKeep;
File[] files = root.listFiles();
File[] files = root.listFiles(filter);
assert files != null;
Arrays.sort(files);
for(int i = 0; i < var1; i++) {
@ -113,6 +117,15 @@ public class BackupHelper {
files[i].delete();
}
}
if(TextileBackup.config.maxSize > 0 && FileUtils.sizeOfDirectory(root) / 1024 > TextileBackup.config.maxSize){
Arrays.stream(root.listFiles()).sorted().forEach(e -> {
if(FileUtils.sizeOfDirectory(root) / 1024 > TextileBackup.config.maxSize){
log("Deleting: " + e.getName(), ctx);
e.delete();
}
});
}
}
}