Files
VisualSapfor/src/_VisualDVM/Passes/All/ArchivesBackupPass.java

57 lines
2.3 KiB
Java
Raw Normal View History

2024-10-14 12:14:01 +03:00
package _VisualDVM.Passes.All;
2024-10-11 00:00:30 +03:00
import Common.Utils.Utils_;
import _VisualDVM.Global;
2024-10-09 22:21:57 +03:00
import _VisualDVM.GlobalData.Machine.Machine;
import _VisualDVM.GlobalData.RemoteFile.RemoteFile;
import _VisualDVM.GlobalData.User.User;
2024-10-14 12:14:01 +03:00
import _VisualDVM.Passes.SSH.ConnectionPass;
2023-09-17 22:13:42 +03:00
import com.jcraft.jsch.ChannelSftp;
import java.io.File;
import java.nio.file.Paths;
import java.util.Comparator;
2023-09-17 22:13:42 +03:00
import java.util.Vector;
public class ArchivesBackupPass extends ConnectionPass<File> {
File src;
@Override
protected boolean canStart(Object... args) throws Exception {
machine = (Machine) args[0];
user = (User) args[1];
src = (File) args[2];
return true;
}
@Override
public String getDescription() {
return "Создание резервной копии базы данных на машине";
}
@Override
2023-09-17 22:13:42 +03:00
protected void ServerAction() throws Exception {
RemoteFile workspace = new RemoteFile(user.connection.sftpChannel.getHome(), "_sapfor_x64_backups", true);
user.connection.MKDIR(workspace);
2023-09-17 22:13:42 +03:00
RemoteFile dst = new RemoteFile(workspace.full_name, src.getName());
user.connection.putSingleFile(src, dst);
2023-09-17 22:13:42 +03:00
//-теперь, удалить старые файлы.
Vector<ChannelSftp.LsEntry> raw_files = user.connection.sftpChannel.ls(workspace.full_name);
2023-09-17 22:13:42 +03:00
Vector<RemoteFile> files = new Vector<>();
for (ChannelSftp.LsEntry file : raw_files) {
if (!file.getAttrs().isDir()) {
RemoteFile rfile = new RemoteFile(workspace.full_name, file.getFilename(), false);
rfile.updateTime = RemoteFile.convertUpdateTime(file.getAttrs().getMTime());
files.add(rfile);
}
}
//сортируем по времени обновления. по убыванию.
files.sort(new Comparator<RemoteFile>() {
@Override
public int compare(RemoteFile o1, RemoteFile o2) {
return Long.compare(o1.updateTime, o2.updateTime);
}
}.reversed()
);
2023-09-17 22:13:42 +03:00
for (int i = 2; i < files.size(); ++i) {
user.connection.sftpChannel.rm(files.get(i).full_name);
2023-09-17 22:13:42 +03:00
}
//--------------
}
}