feat: Implement backup deletion and improve exclusion list
This commit introduces two main improvements: 1. **Backup Deletion:** The user can now delete system and user backups from the "Backup Content" view. 2. **Improved Exclusion List:** The `.cache` directory is now excluded from backups by default, which should prevent "file has vanished" warnings from rsync.
This commit is contained in:
@@ -86,6 +86,7 @@ class AppConfig:
|
||||
**/root/.gvfs
|
||||
/snap/*
|
||||
/home/*/.gvfs
|
||||
/home/*/.cache/*
|
||||
/var/cache/pacman/pkg/*
|
||||
/var/cache/apt/archives/*
|
||||
/var/cache/yum/*
|
||||
|
||||
@@ -122,9 +122,25 @@ class SystemBackupContentFrame(ttk.Frame):
|
||||
print(f"Restoring {backup_name}...")
|
||||
|
||||
def _delete_selected(self):
|
||||
# Placeholder for delete logic
|
||||
selected_item = self.content_tree.focus()
|
||||
if not selected_item:
|
||||
return
|
||||
backup_name = self.content_tree.item(selected_item)["values"][0]
|
||||
print(f"Deleting {backup_name}...")
|
||||
|
||||
item_values = self.content_tree.item(selected_item)["values"]
|
||||
folder_name = item_values[4] # Assuming folder_name is the 5th value
|
||||
|
||||
# Construct the full path to the backup folder
|
||||
pybackup_path = os.path.join(self.backup_path, "pybackup")
|
||||
folder_to_delete = os.path.join(pybackup_path, folder_name)
|
||||
|
||||
# Ask for confirmation
|
||||
from shared_libs.message import MessageDialog
|
||||
dialog = MessageDialog(master=self, message_type="warning",
|
||||
title=Msg.STR["confirm_delete_title"],
|
||||
text=Msg.STR["confirm_delete_text"].format(folder_name=folder_name),
|
||||
buttons=["ok_cancel"])
|
||||
if dialog.get_result() != "ok":
|
||||
return
|
||||
|
||||
self.backup_manager.delete_privileged_path(folder_to_delete)
|
||||
self._load_backup_content()
|
||||
|
||||
@@ -109,9 +109,34 @@ class UserBackupContentFrame(ttk.Frame):
|
||||
print(f"Restoring {backup_name}...")
|
||||
|
||||
def _delete_selected(self):
|
||||
# Placeholder for delete logic
|
||||
selected_item = self.content_tree.focus()
|
||||
if not selected_item:
|
||||
return
|
||||
backup_name = self.content_tree.item(selected_item)["values"][0]
|
||||
print(f"Deleting {backup_name}...")
|
||||
|
||||
item_values = self.content_tree.item(selected_item)["values"]
|
||||
folder_name = item_values[3] # Assuming folder_name is the 4th value
|
||||
|
||||
# Construct the full path to the backup folder
|
||||
folder_to_delete = os.path.join(self.backup_path, folder_name)
|
||||
info_file_to_delete = os.path.join(self.backup_path, f"{folder_name}.txt")
|
||||
|
||||
# Ask for confirmation
|
||||
from shared_libs.message import MessageDialog
|
||||
dialog = MessageDialog(master=self, message_type="warning",
|
||||
title=Msg.STR["confirm_delete_title"],
|
||||
text=Msg.STR["confirm_delete_text"].format(folder_name=folder_name),
|
||||
buttons=["ok_cancel"])
|
||||
if dialog.get_result() != "ok":
|
||||
return
|
||||
|
||||
try:
|
||||
import shutil
|
||||
if os.path.isdir(folder_to_delete):
|
||||
shutil.rmtree(folder_to_delete)
|
||||
if os.path.exists(info_file_to_delete):
|
||||
os.remove(info_file_to_delete)
|
||||
except Exception as e:
|
||||
MessageDialog(master=self, message_type="error",
|
||||
title=Msg.STR["error"], text=str(e))
|
||||
|
||||
self._load_backup_content()
|
||||
|
||||
Reference in New Issue
Block a user