forked from CastroFidel/winehelper
Compare commits
1 Commits
gui
...
backup_upd
Author | SHA1 | Date | |
---|---|---|---|
ea621f0402 |
58
winehelper
58
winehelper
@ -1568,12 +1568,13 @@ backup_prefix() {
|
|||||||
export WINEPREFIX="$1"
|
export WINEPREFIX="$1"
|
||||||
check_prefix_var
|
check_prefix_var
|
||||||
|
|
||||||
local backup_base_dir="$(xdg-user-dir DESKTOP)"
|
local backup_base_dir backup_archive_name backup_dest_path temp_backup_dir temp_prefix_dir temp_users_dir
|
||||||
local backup_archive_name="backup_${PREFIX_NAME}_$(date +%Y.%m.%d).whpack"
|
backup_base_dir="$(xdg-user-dir DESKTOP)"
|
||||||
local backup_dest_path="$backup_base_dir/$backup_archive_name"
|
backup_archive_name="backup_${PREFIX_NAME}_$(date +%d.%m.%Y-%H.%M.%S).whpack"
|
||||||
local temp_backup_dir="$WH_TMP_DIR/backup_${PREFIX_NAME}_$(date +%Y.%m.%d)"
|
backup_dest_path="$backup_base_dir/$backup_archive_name"
|
||||||
local temp_prefix_dir="$temp_backup_dir/prefixes/$PREFIX_NAME"
|
temp_backup_dir="$WH_TMP_DIR/backup_${PREFIX_NAME}_$(date +%d.%m.%Y-%H.%M.%S)"
|
||||||
local temp_users_dir="$temp_prefix_dir/drive_c/users"
|
temp_prefix_dir="$temp_backup_dir/prefixes/$PREFIX_NAME"
|
||||||
|
temp_users_dir="$temp_prefix_dir/drive_c/users"
|
||||||
|
|
||||||
print_info "Начало резервного копирования префикса: $PREFIX_NAME"
|
print_info "Начало резервного копирования префикса: $PREFIX_NAME"
|
||||||
create_new_dir "$temp_backup_dir"
|
create_new_dir "$temp_backup_dir"
|
||||||
@ -1617,9 +1618,11 @@ backup_prefix() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Сохраняем метаданные внутри временной директории
|
||||||
|
echo "$PREFIX_NAME" > "$temp_backup_dir/prefix_name.whmeta"
|
||||||
|
|
||||||
print_info "Создание squashfs архива..."
|
print_info "Создание squashfs архива..."
|
||||||
if mksquashfs "$temp_backup_dir" "$backup_dest_path" -comp zstd ; then
|
if mksquashfs "$temp_backup_dir" "$backup_dest_path" -comp zstd ; then
|
||||||
echo -e "\n# PREFIX_NAME=$PREFIX_NAME" >> "$backup_dest_path"
|
|
||||||
print_ok "Архив префикса $PREFIX_NAME успешно создан по пути:\n$backup_dest_path"
|
print_ok "Архив префикса $PREFIX_NAME успешно создан по пути:\n$backup_dest_path"
|
||||||
else
|
else
|
||||||
print_error "Не удалось создать архив префикса $PREFIX_NAME."
|
print_error "Не удалось создать архив префикса $PREFIX_NAME."
|
||||||
@ -1651,15 +1654,7 @@ restore_prefix() {
|
|||||||
|
|
||||||
print_info "Восстановление из резервной копии: $backup_archive_path"
|
print_info "Восстановление из резервной копии: $backup_archive_path"
|
||||||
|
|
||||||
prefix_name="$(tail -n1 "$backup_archive_path" | sed -e 's/.*PREFIX_NAME=//')"
|
temp_extract_dir="$WH_TMP_DIR/restore_$(basename "$backup_archive_path" .whpack)_$$"
|
||||||
|
|
||||||
if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then
|
|
||||||
fatal "Префикс $prefix_name уже существует!
|
|
||||||
Удалите его, если действительно желаете восстановить префикс заново.
|
|
||||||
Команда для удаления: $SCRIPT_NAME remove-prefix $prefix_name"
|
|
||||||
fi
|
|
||||||
|
|
||||||
temp_extract_dir="$WH_TMP_DIR/restore_$(basename "$backup_archive_path" .whpack)"
|
|
||||||
create_new_dir "$temp_extract_dir"
|
create_new_dir "$temp_extract_dir"
|
||||||
|
|
||||||
print_info "Распаковка архива..."
|
print_info "Распаковка архива..."
|
||||||
@ -1670,9 +1665,32 @@ restore_prefix() {
|
|||||||
fatal "Не удалось распаковать архив."
|
fatal "Не удалось распаковать архив."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -d "$temp_extract_dir/prefixes" ]] ; then
|
# Определяем имя префикса
|
||||||
local prefix_name
|
if [[ -f "$temp_extract_dir/prefix_name.whmeta" ]]; then
|
||||||
prefix_name="$(ls -1 "$temp_extract_dir/prefixes")"
|
prefix_name="$(cat "$temp_extract_dir/prefix_name.whmeta")"
|
||||||
|
try_remove_file "$temp_extract_dir/prefix_name.whmeta"
|
||||||
|
elif grep -q "PREFIX_NAME=" "$backup_archive_path" ; then
|
||||||
|
# Обратная совместимость со старыми бэкапами (с приписанной строкой)
|
||||||
|
prefix_name="$(tail -n1 "$backup_archive_path" | sed -e 's/.*PREFIX_NAME=//')"
|
||||||
|
elif [[ -d "$temp_extract_dir/prefixes" ]] && [[ $(find "$temp_extract_dir/prefixes" -mindepth 1 -maxdepth 1 -type d | wc -l) -eq 1 ]]; then
|
||||||
|
# Обратная совместимость со старыми бэкапами (по имени каталога)
|
||||||
|
prefix_name="$(basename "$(find "$temp_extract_dir/prefixes" -mindepth 1 -maxdepth 1 -type d)")"
|
||||||
|
else
|
||||||
|
try_remove_dir "$temp_extract_dir"
|
||||||
|
fatal "Не удалось определить имя префикса в архиве (метаданные не найдены)."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$prefix_name" ]]; then
|
||||||
|
try_remove_dir "$temp_extract_dir"
|
||||||
|
fatal "Не удалось определить имя префикса в архиве."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then
|
||||||
|
try_remove_dir "$temp_extract_dir"
|
||||||
|
fatal "Префикс $prefix_name уже существует!\n Удалите его, если действительно желаете восстановить префикс заново.\n Команда для удаления: $SCRIPT_NAME remove-prefix $prefix_name"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -d "$temp_extract_dir/prefixes/$prefix_name" ]] ; then
|
||||||
local prefix_dir="$temp_extract_dir/prefixes/$prefix_name"
|
local prefix_dir="$temp_extract_dir/prefixes/$prefix_name"
|
||||||
|
|
||||||
print_info "Восстановление префикса: $prefix_name"
|
print_info "Восстановление префикса: $prefix_name"
|
||||||
@ -1711,7 +1729,7 @@ restore_prefix() {
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
try_remove_dir "$temp_extract_dir"
|
try_remove_dir "$temp_extract_dir"
|
||||||
fatal "Директория prefixes не найдена в архиве."
|
fatal "Директория префикса '$prefix_name' не найдена в архиве."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
try_remove_dir "$temp_extract_dir"
|
try_remove_dir "$temp_extract_dir"
|
||||||
|
1530
winehelper_gui.py
1530
winehelper_gui.py
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user