BackupUtil class
Пакет: com.hypixel.hytale.server.core.util.backup
Файл: com/hypixel/hytale/server/core/util/backup/BackupUtil.java
Поля (7)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Message |
var1 |
|
byte[] |
var11 |
|
int |
var12 |
|
ZipEntry |
var19 |
|
List |
var3 |
|
long |
var7 |
|
CRC32 |
var9 |
Методы (3)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
static |
void |
broadcastBackupErrorvoid broadcastBackupError(Throwable var0) |
static |
void |
broadcastBackupStatusvoid broadcastBackupStatus(boolean var0) |
static |
void |
walkFileTreeAndZipvoid walkFileTreeAndZip(@Nonnull Path var0, @Nonnull Path var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.util.backup;
class="kw">import com.hypixel.hytale.common.util.PathUtil;
class="kw">import com.hypixel.hytale.common.util.java.ManifestUtil;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.WorldSavingStatus;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.permissions.HytalePermissions;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
class="kw">import java.io.IOException;
class="kw">import java.io.InputStream;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.nio.file.attribute.BasicFileAttributes;
class="kw">import java.nio.file.attribute.FileTime;
class="kw">import java.util.Comparator;
class="kw">import java.util.List;
class="kw">import java.util.stream.Stream;
class="kw">import java.util.zip.CRC32;
class="kw">import java.util.zip.ZipEntry;
class="kw">import java.util.zip.ZipOutputStream;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class BackupUtil {
BackupUtil() {
}
class="kw">static void walkFileTreeAndZip(@Nonnull Path var0, @Nonnull Path var1) class="kw">throws IOException {
try (ZipOutputStream var2 = new ZipOutputStream(Files.newOutputStream(var1))) {
var2.setMethod(0);
var2.setLevel(0);
var2.setComment(
"Automated backup by HytaleServer - Version: "
+ ManifestUtil.getImplementationVersion()
+ ", Revision: "
+ ManifestUtil.getImplementationRevisionId()
);
try (Stream var3 = Files.walk(var0)) {
for (Path var6 : var3.filter(var0x -> Files.isRegularFile(var0x)).filter(var0x -> !var0x.endsWith("LOCK")).toList()) {
long var7 = Files.size(var6);
CRC32 var9 = new CRC32();
try (InputStream var10 = Files.newInputStream(var6)) {
byte[] var11 = new byte[16384];
int var12;
while ((var12 = var10.read(var11)) != -1) {
var9.update(var11, 0, var12);
}
}
ZipEntry var19 = new ZipEntry(PathUtil.toUnixPathString(var0.relativize(var6)));
var19.setSize(var7);
var19.setCompressedSize(var7);
var19.setCrc(var9.getValue());
var2.putNextEntry(var19);
Files.copy(var6, var2);
var2.closeEntry();
}
}
}
}
class="kw">static void broadcastBackupStatus(boolean var0) {
Universe.get().broadcastPacket(new WorldSavingStatus(var0));
}
class="kw">static void broadcastBackupError(Throwable var0) {
Message var1 = Message.translation("server.universe.backup.error").param("message", var0.getLocalizedMessage());
Universe.get().getPlayers().forEach(var1x -> {
if (var1x.hasPermission(HytalePermissions.BACKUP_ERROR_NOTIFY)) {
var1x.sendMessage(var1);
}
});
}
@Nullable
class="kw">static List<Path> findOldBackups(@Nonnull Path var0, int var1) class="kw">throws IOException {
if (!var0.toFile().isDirectory()) {
class="kw">return null;
}
try (Stream var2 = Files.list(var0)) {
List var3 = var2.filter(var0x -> var0x.getFileName().toString().endsWith(".zip")).sorted(Comparator.comparing(var0x -> {
try {
class="kw">return Files.readAttributes(var0x, BasicFileAttributes.class).creationTime();
} catch (IOException var2) {
class="kw">return FileTime.fromMillis(0L);
}
})).toList();
if (var3.size() > var1) {
class="kw">return var3.subList(0, var3.size() - var1);
}
}
class="kw">return null;
}
}