92 lines
3.7 KiB
C#
92 lines
3.7 KiB
C#
using System.IO.Compression;
|
|
|
|
public class Update {
|
|
public static string getHomePath() {
|
|
string homePath = string.Empty;
|
|
|
|
if(Environment.OSVersion.Platform == PlatformID.Unix) {
|
|
homePath = Environment.GetEnvironmentVariable("HOME");
|
|
return homePath;
|
|
} else {
|
|
throw new ApplicationException("This script doesn't support your operating system.");
|
|
}
|
|
}
|
|
public static string copyEverthingBeforeUpdateToBackupLocation() {
|
|
string targetPath = getHomePath() + "/backup/uncompressed/";
|
|
|
|
string[] systemFilesToCopy = {"/etc/fstab", "/etc/makepkg.conf"};
|
|
List<string> filesToCopy = new List<string>(systemFilesToCopy);
|
|
|
|
string pacmanPackageListBeforeUpdate = getHomePath() + "/pacman-pre.txt";
|
|
filesToCopy.Add(pacmanPackageListBeforeUpdate);
|
|
string flatpakListBeforeUpdate = getHomePath() + "/flatpak-pre.txt";
|
|
filesToCopy.Add(flatpakListBeforeUpdate);
|
|
|
|
if (!Directory.Exists(targetPath)) {
|
|
Directory.CreateDirectory(targetPath);
|
|
} else {
|
|
foreach (string file in filesToCopy) {
|
|
FileInfo info = new FileInfo(file);
|
|
string destFile = Path.Combine(targetPath, info.Name);
|
|
File.Copy(info.FullName, destFile, true);
|
|
}
|
|
}
|
|
|
|
string copiedFiles = string.Join(", ", filesToCopy);
|
|
|
|
Console.ForegroundColor = ConsoleColor.Green;
|
|
return $"Copied {copiedFiles} to {targetPath}";
|
|
}
|
|
|
|
/// <summary>
|
|
/// Method <c>copyEverthingFromBackupLocationToFinalDestination</c> copies everything to second Backup Location which should be a external drive or a network share. Offsite/Second Backup.
|
|
/// </summary>
|
|
public static string copyEverthingFromBackupLocationToFinalDestination() {
|
|
string targetPath = "/artemis/test/";
|
|
|
|
if (!Directory.Exists(targetPath)) {
|
|
Console.ForegroundColor = ConsoleColor.Red;
|
|
return $"Backup location does not exist! Please specify one in the config.";
|
|
}
|
|
|
|
if (targetPath is not null) {
|
|
string sourcePath = getHomePath() + "/backup/";
|
|
string[] intermediateBackupLocation = Directory.GetFiles(sourcePath);
|
|
|
|
if (!Directory.Exists(targetPath)) {
|
|
throw new DirectoryNotFoundException("Target directory not found");
|
|
} else {
|
|
foreach (string file in intermediateBackupLocation) {
|
|
FileInfo info = new FileInfo(file);
|
|
string destFile = Path.Combine(targetPath, info.Name);
|
|
File.Copy(info.FullName, destFile, true);
|
|
}
|
|
}
|
|
Console.ForegroundColor = ConsoleColor.Green;
|
|
return $"Copied everything successfully to {targetPath}";
|
|
} else {
|
|
Console.ForegroundColor = ConsoleColor.Red;
|
|
return "You have not configured a backup location!";
|
|
}
|
|
}
|
|
|
|
public static bool zipAllContentInBackupLocation() {
|
|
string targetPath = getHomePath() + "/backup/compressed/";
|
|
Directory.CreateDirectory(targetPath);
|
|
|
|
string sourcePath = getHomePath() + "/backup/uncompressed/";
|
|
string targetZip = getHomePath() + "/backup/compressed/backup.zip";
|
|
ZipFile.CreateFromDirectory(sourcePath, targetZip);
|
|
|
|
string pacmanDatabaseLocation = "/var/lib/pacman/local/";
|
|
string pacmanDatabaseZip = getHomePath() + "/backup/compressed/pacman_database.zip";
|
|
ZipFile.CreateFromDirectory(pacmanDatabaseLocation, pacmanDatabaseZip);
|
|
|
|
if (File.Exists(targetZip) && File.Exists(pacmanDatabaseZip)) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
|
|
}
|
|
} |