Файл: Инструкция для пользователя Примечание для пользователя.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 26

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.






Инструкция для пользователя

П осле запуска исполняемого файла пользователь увидит графический интерфейс, который выглядит следующим образом.

Перед пользователем появится окошко, в котором ему будет предоставлена возможность выбрать путь до папки, для файлов которых необходимо создать резервную копию. Также папку, в которую будет сохранена резервная копия файлов в архиве. И также период времени в секундах, в который будет выполнять бэкап.

Original Folder – папка, из которой берутся файлы для бэкапа.

Backup Folder – папка, в которую будет помещен бэкап.

Backup Time – время в секундах (период бэкапа)

Кнопки Start, Stop – начало и конец резервного копирования.

Д анная программа ориентирована под пользователей, использующих платформу OC Windows. Установка специального программного обеспечения не требуется. Для запуска программы необходимо:

  1. Открыть папку с программой

  2. Убедиться, что в ней присутствуют все файлы, как на картинке

  3. Запустить исполняемый файл с названием “main.exe”

Инструкция пользователя

После запуска исполняемого файла main.exe

  1. Нажать на кнопку и выбрать путь до необходимой папки для начала резервного копирования

  2. Нажать на кнопку ниже и выбрать путь до папки, в которую будет сохранена резервная копия.

  3. Выбрать в поле время в секундах, это означает период резервного копирования.

Для облегчения:

60 – 1 минута

3600 – 1 час

7200 – 2 часа

10800 – 3 часа

86400 – 1 день

604800 – 1 неделя

2592000 – 30 дней

Примечание для пользователя:


  1. Выбор двух одинаковых путей(папок) запрещен.

  2. Необходимо наличие original folder и backup folder

  3. Взаимодействие с архивами во время резервного копирования запрещается

Пример результата работы



Список используемых ресурсов

https://askdev.ru/q/pochemu-raid-1-schitaetsya-plohim-dlya-rezervnogo-kopirovaniya-zakrytyy-303567/

https://www.in-nov.ru/node/2913

https://www.bibliofond.ru/view.aspx?id=607238#text

https://habr.com/ru/post/162839/

https://www.reg.ru/blog/rasskazyvaem-o-rezervnom-kopirovanii/

https://sbercloud.ru/ru/warp/chto-takoe-rezervnoe-kopirovanie

https://ru.wikipedia.org/wiki/Резервное_копирование

https://www.diagrameditor.com

https://programforyou.ru/block-diagram-redactor

Реализация

/main.py/

import os # работа с операционной системой

import shutil # для архивации

from datetime import datetime

from tkinter import Tk, filedialog, StringVar, messagebox # интерфейс

from GUI import GUI # визуальная часть

app = GUI() # подключение визуальной части

running = False # переменная бэкапа

def backup():

backup_time = 1

if running: # = True - выполнение бэкапа в заданой переодичность

origin_dir = app.VOrigin.get() # Путь папки оригинала

backup_dir = app.VBackup.get() # Путь для бекапа

backup_time = int(app.VBackupTime.get()) # Ввод времени через которое надо делать бекап в секундах

# создание резервной копии с определенным интервалом

shutil.make_archive(backup_dir + "\\" + str(datetime.now().strftime("%d_%m_%Y_%H_%M_%S")), 'zip', origin_dir)

# создание архива с днем и временем (бекап)

app.after(backup_time*1000, backup) # повторной вывод данной процедуры через заданое время в секундах

# провеерка на существование папки оригинала

def __start():

origin_dir = app.VOrigin.get()

backup_dir = app.VBackup.get()

backup_time = app.VBackupTime.get()

if not os.path.exists(origin_dir) or not os.path.isdir(origin_dir):

messagebox.showerror('Error', 'Origin folder not found') # Папка с файлами не была найдена

return

# проверка на существование папки бекапа

if not os.path.exists(backup_dir) or not os.path.isdir(backup_dir):

messagebox.showerror('Error', 'Backup folder not found') # Папка для резервной копии не была найдена

return

# провека на изолированность резервной копии

if origin_dir == backup_dir:

messagebox.showerror('Error',

'Backup should be saved to another directory') # Резервная копия должна быть сохранена в другой директории

return

if not backup_time.isnumeric():

messagebox.showerror('Error', 'Backup time must be numeric') # Проверка на число

return

if float(backup_time) < 1:

messagebox.showerror('Error','Backup time must be more then 1 second') # Минимальное время должно быть больше одной секунды

return

global running


running = True

def __stop(): # Стоп

global running

running = False

def __get_directory(element: StringVar): # Функция вывода пути к директории

folder = filedialog.askdirectory()

if folder != '':

element.set(folder)

app.BOrigin.config(command=lambda: __get_directory(app.VOrigin)) # ввод пути оригинала

app.BBackup.config(command=lambda: __get_directory(app.VBackup)) # ввод пути бекапа

app.BStart.config(command=__start) # старт создания бекапа

app.BStop.config(command=__stop)

backup() # Запуск функции бэкапа

app.mainloop() # Запуск цикла программы

/GUI.py/

import tkinter

from tkinter import *

class GUI(tkinter.Tk):

def __init__(self):

super().__init__()

self.title('Backup Manager')

self.iconbitmap('icon.ico')

self.resizable(0, 0)

self.geometry('500x150')

Label(self, text='Original Folder').place(x=20, y=4, height=20, width=100)

self.VOrigin = StringVar()

self.EOrigin = Entry(self, textvariable=self.VOrigin)

self.EOrigin.place(x=30, y=24, height=20, relwidth=0.748)

self.BOrigin = Button(self, text='...', background="#d9d9d9")

self.BOrigin.place(x=420, y=22, height=24, width=57)

Label(self, text='Backup Folder').place(x=20, y=48, height=20, width=100)

self.VBackup = StringVar()

self.EBackup = Entry(self, textvariable=self.VBackup)

self.EBackup.place(x=30, y=68, height=20, relwidth=0.748)

self.BBackup = Button(self, text='...', background='#d9d9d9')

self.BBackup.place(x=420, y=68, height=24, width=57)

self.BStart = Button(self, text='Start', font="-family {Segoe UI} -size 11", background="#d9d9d9")

self.BStart.place(x=20, y=100, height=34, width=80)

Label(self, text='Backup Time').place(x=120, y=110, height=20, width=100)

self.VBackupTime = StringVar()

self.EBackupTime = Entry(self, textvariable=self.VBackupTime)

self.EBackupTime.place(x=210, y=110, height=20, width=140)

self.BStop = Button(self, text='Stop', font="-family {Segoe UI} -size 11", background="#d9d9d9")

self.BStop.place(x=400, y=100, height=34, width=80)