Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/56: Рейтинг темы: голосов - 56, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 14

Скрипт резервного копирования

08.12.2010, 22:46. Показов 12222. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят помогите пожалуйста, я в Python очень плохо разбираюсь, учили мы его очень быстро, практически сами.Задали такую работу.Написать скрипт создания системы резервного копирования УДАЛЕННЫХ ИЛИ ИЗМЕНЕННЫХ обьектов.Немного вот нашла по этой теме, но это не совсем то, здесь идет копирование всех файлов, а мне нужно только измененных или удаленных.Все кто может помочь, очень прошу помочь.У нас его толком никто не знает, вот и обратиться не к кому(((Как мне в этом скрипте зделать так чтоб копировалось то что мне нужно, а не все?
Вот скрипт с пояснениями:

Переместимся в корневой раздел:
[root@deep]# cd /

Важно всегда начинать с изготовления полной резервной копии, например, в пятницу:
Пятница 1 (используйте ленту 1 для первой полной резервной копии).
[root@deep /]# cd /
[root@deep /]# tar cpf /dev/st0 --label=" full-backup created on `date '+\
%d-%B-%Y'`." --directory / home
Понедельник (используется лента 2 для добавочной резервной копии).
[root@deep /]# cd /
[root@deep /]# tar cpNf /dev/st0 --label=" full-backup created on `date '+\
%d-%B-%Y'`." --directory / home
Вторник (используется лента 3 для добавочной резервной копии).
[root@deep /]# cd /
[root@deep /]# tar cpNf /dev/st0 --label=" full-backup created on `date '+\
%d-%B-%Y'`." --directory / home
Среда (используется лента 4 для добавочной резервной копии).
[root@deep /]# cd /
[root@deep /]# tar cpNf /dev/st0 --label=" full-backup created on `date '+\
%d-%B-%Y'`." --directory / home
Четверг (используется лента 5 для добавочной резервной копии).
[root@deep /]# cd /
[root@deep /]# tar cpNf /dev/st0 --label=" full-backup created on `date '+\
%d-%B-%Y'`." --directory / home
Пятница 2 (используется лента 6 для полной резервной копии).
[root@deep /]# cd /
[root@deep /]# tar cpf /dev/st0 --label=" full-backup created on `date '+\
%d-%B-%Y'`." --directory / home

Далее, делаем добавочные резервные копии на лентах со 2 по 5 и так далее.
Опция c определяет, что мы создаем архивный файл. Опция p сохраняет права доступа. Опция N делает добавочную резервную копию и запоминает файлы новее, чем DATE. Опция f говорит, что следующий аргумент будет либо именем архивного файла, либо именем устройства, на которое производится запись.
Объясним, как мы получили имя файла, который содержит текущую дату: просто поместим команду date между обратными кавычками. К основному имени добавляется суффикс tar для несжатых архивов, и суффикс tar.gz для сжатых. Так как мы не определяем конкретное имя для файла резервной копии, то воспользуемся опцией --label, которая позволяет записать некоторую информацию в архивный файл. В заключение мы определяем, что только файлы из каталога /home будут записаны на ленту.

Так как лента это устройство посимвольного ввода, мы не можем определить имя файла. Поэтому, в качестве аргумента для опции "имя файла" программы tar используется просто имя устройства /dev/st0. Устройство /dev/st0 не перематывается после создания резервной копии, поэтому мы имеем возможность записать на одну ленту несколько сессий. Мы можем также сказать устройству /dev/st0 автоматически перемотать ленту после окончания записи резервной копии.
Для уменьшения пространства, занимаемого tar-архивом, резервная копия может быть сжата при помощи опции z программы tar. К сожалению, использование этой опции может создать ряд проблем. Из природы работы сжатия следует, что если хотя бы один бит будет испорчен, то и все данные, нужные для восстановления будут потеряны. Поэтому рекомендуется не использовать сжатие (опция z) для создания резервной копии при помощи команды tar.
Если наша резервная копия не помещается на ленте, то нам надо использовать опцию --multi-volume (-M) для создания многотомных архивов:
[root@deep /]# cd /
[root@deep /]# tar cMpf /dev/st0 /home
Prepare volume #2 for /dev/st0 and hit return:
После того, как мы создали резервную копию, мы должны убедиться, что все хорошо, используем опцию --compare (-d):
[root@deep /]# cd /
[root@deep /]# tar dvf /dev/st0
Для резервного копирования всей системы используем следующую команду:
[root@deep /]# cd /

[root@deep /]# tar cpf /archive/full-backup-`date '+%d-%B-%Y'`.tar \
--directory / --exclude=proc --exclude=mnt \
--exclude=archive --exclude=cache --exclude=*/lost+found .

Опция --directory говорит tar, что до начала резервного копирования надо перейти в следующий каталог (в нашем примере /). Опция --exclude говорит tar не создавать резервные копии заданных каталогов и файлов. Символ ., находящийся в конце командной строки говорит tar, что он должен копировать все в текущем каталоге.

Когда мы создаем резервную копию нашей системы, ненужно включать в нее псевдофайловую систему /proc! Файлы в /proc не настояшие файлы, это просто файлоподобные ссылки к структуре ядра. Также не включаем каталоги /mnt, /archive и все lost+found.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2010, 22:46
Ответы с готовыми решениями:

Скрипт для копирования текста из вышедшего поста в канале телеграм
Как написать скрипт на питоне,чтобы при выходе поста в определённом канале скопировалось его содержимое в буфер обмена

Нужны скрипты резервного копирования с архивацией
Привет Всем,если не трудно покидайте скрипты резервного копирования.....с архивацией

Скрипт для копирования файлов по SFTP
В общем нужен скрипт,для копирования звукозаписей с linuxs сервера по SFTP Данные для копирования берутся из файла 1(имена файлов), куда...

30
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
08.12.2010, 22:53
резервного копирования УДАЛЕННЫХ ИЛИ ИЗМЕНЕННЫХ обьектов
это видимо обратное копирование
типа, если что-то было изменено или удалено, то восстановить это из резервного хранилища

в таком случае нужно два скрипта: один создаёт хранилище, другой сопоставляет текущие файлы с файлами в хранилище
создаваемое хранилище должно иметь информацию об изменении файла
0
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 14
08.12.2010, 23:02  [ТС]
нет, просто копировать не все файлы, а с помощью find находить измененные или удаленные и отсылать их на носитель информации

Добавлено через 4 минуты
Я просто много чего в нете перечитала, но такого как мне нужно не нашла, это если кто-то для своей системы писал такой backup с такими запросами, того очень прошу откликнуться на мою просьбу))
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
08.12.2010, 23:06
Цитата Сообщение от tasay
нет, просто копировать не все файлы, а с помощью find находить измененные или удаленные
ну попробуй, найди с помощью find удалённый файл
все файлы изменённые, даже если его только что создать, он уже изменённый
есть точка отсчёта, относительно чего они изменённые
0
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 14
08.12.2010, 23:14  [ТС]
Значит, я что то не так поняла... скажите , можно ли взять за основу тот скрипт, что я выложила и просто дописать его, или все таки необходимо писать 2 скрипта?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
08.12.2010, 23:22
во-первых, это никакого отношения к питону не имеет, это shell
во-вторых, там есть какое-то создание резервной копии и нет никакого восстановления из резервной копии, что является основным в задании
в третьих, задание сформулированно очень абстрактно, прежде чем искать решения, нужно чётко знать, что за задача

что ты хочешь, скрипт на питоне ?
Python
1
2
3
import os
 
os.system('/home/user/backupscript.sh')
это скрипт на питоне, запускающий скрипт на shell
но это не задание, выполненное на питоне
0
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 14
08.12.2010, 23:28  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
нужно чётко знать, что за задача
что ты хочешь, скрипт на питоне ?
само мое задание написано так:
Построение системы резервного копирования с сохранением удаленных (измененных) объектов.
Я поняла его так как писала выше.Скрипт надо написать на питоне.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.12.2010, 00:01
ну вот и начни с расшифровки, если ты не понимаешь задания, зачем ты его начинаешь делать ?

для начала: что резервируется ?
скажи ещё удалённые объекты
удалённые с носителя, или удалённые в сети ?
скажи удалённые с носителя
а для чего они резервируются, если они уже удалены ?
чтобы потом удалить их повторно ?
0
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 14
09.12.2010, 00:22  [ТС]
Резервируем данные которые находятся на компьюторе, резервируем на сьемный носитель информации.Удаленные обьекты резервируем для того, чтобы в случае нежеланного удаления не потерять их, если , например кто-то преднамеренно их удалил, а они нам нужны были.вот для чего нам удаленные объекты.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.12.2010, 00:38
Цитата Сообщение от tasay
например кто-то преднамеренно их удалил
кто-то удалил удалённый объект, а как он его удалил, если тот уже удалён ?

это больше похоже, что сохраняются объекты, которые есть, которые не удалённые, и если их кто-то удалил, то они восстанавливаются из резервного хранилища

допустим, записываются в хранилище файлы, вообще все (первым скриптом, скриптом создания резервного хранилища)
потом запускается скрипт, который проверяет, есть ли на компьютере файлы, которые изменились по сравнению с файлами из хранилища, и отсутствуют ли на компьютере файлы, которые есть в хранилище
если такие файлы есть, то восстановить из хранилища эти файлы на компьютер обратно
вот на что это похоже всё

естественно, что оба этих скрипта можно запихнуть в один и устроить мешанину из двух разных скриптов
0
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 14
09.12.2010, 14:31  [ТС]
просто как я понимаю, система резервного копирования должна как-то реагировать на то что, файл, находящийся на компьютере был удален, и делать себе копию удаленного.Эт, как я понимаю ,что-то типа корзины.Когда мы удаляем файл он не удаляется сразу- он перемещается в корзину, откуда потом его можно восстановить.Только в нашем случае мы не восстанавливаем, а делаем копию этого файла.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.12.2010, 23:03
тогда это резервирование определённой папки, которая может не находиться в дереве тех данных, которые резервируются

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

есть вообще две процедуры: резервирование и восстановление
мы рассматриваем пока что резервирование

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

значит получается: 1) нужно полное резервирование 2) нужно выборочное резервирование (обновление) по условию 3) нужно восстановление
0
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 14
09.12.2010, 23:14  [ТС]
Скорее всего нужно сделать так как вы сказали, но мне кажется, что это не по моим силам.Можно ли все зделать в одном скрипте?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.12.2010, 23:57
да, одного знания питона не хватит
эту прогу нужно разработать, чтобы всё точно было
(чтобы она файлы, которые не надо резервировать не резервировала, а те, которые надо резервировать, не пропускала)
0
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 14
10.12.2010, 00:05  [ТС]
Ох, ну если так - тогда вообще я не знаю что делать...

Добавлено через 1 минуту
Спасибо вам, что вы мне так все подробно разложили по полочкам)))
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
10.12.2010, 00:35
да, цель прояснили (вроде бы), без этого дела никуда
0
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 14
10.12.2010, 00:42  [ТС]
Цель есть, но как это все реализовать... проблема((
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
10.12.2010, 01:09
дальше намечаем, что может понадобиться
1) резервирование одного файла
1.1) установить дату-время у скопированного в хранилище файла
2) восстановление одного файла
3) резервирование директории
4) восстановление директории
...
10) интерфейс

полное и частичное резервирование файла отличаются наличием условия резервирования
полное резервирование - это копирование с переносом даты-времени
частичное резервирование - это проверка условия и копирование с переносом даты-времени
общая часть заносится в одну функцию, проверка условия выполняется выше
0
2 / 2 / 0
Регистрация: 10.12.2010
Сообщений: 29
10.12.2010, 08:10
Можно и не так круто. Хотя и не уверен что хватит.
После того, как зарегился на дропбоксе я себе вот такой скриптик написал чтобы он сливал нужные файлы со всего компа в папку My Dropbox:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import os,sys
from special import load_config_data
 
# root = tk.Tk()
# root.mainloop()
cfg = load_config_data("config.ini")
 
for key in cfg:
    print "======================================================="
    src_folder = cfg[key].src
    dst_folder = cfg[key].dst
 
    for root, dirs, files in os.walk(src_folder):
      for name in files:
        src_file = os.path.join(root, name)
        src_time = os.path.getmtime(src_file)
        
        dst_file = src_file.replace(src_folder,dst_folder+"\\"+src_folder.split("\\")[-1])
        # print dst_file
        # continue
        
        if os.path.exists(dst_file):
            dst_time = os.path.getmtime(dst_file)
        else:
            path = os.path.realpath(dst_file)
            dir = os.path.split(path)[-2]
            if not os.path.exists(dir):
                os.makedirs(dir)
            dst_time = 0
        
        if src_time>dst_time:
            f1 = open(src_file,'rb')
            dump = f1.read()
            f2 = open(dst_file,'wb')
            f2.write(dump)
            f1.close()
            f2.close()
            sign = dst_time is 0 and "[+]" or "[^]"
            print sign, dst_file
        else:
            print "[=]", dst_file
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def dict_from_config_file(file, raw=False, vars=None): 
    """Convert an INI file to a dictionary""" #from cherrypy 
    inifile = ConfigParser() 
    inifile.read(file)     # Parse config file 
 
    # Load INI file into a dict 
    result = dict()
    for section in inifile.sections(): 
        result[section] = dict() 
        for option in inifile.options(section): 
            v = inifile.get(section, option, raw, vars) 
            result[section][option] = v
    return result    
    
def load_config_data(file):
    ini = dict_from_config_file(file)
    dictionary = dict()
    for entry in ini:
        dictionary[entry] = Structure()
        for key in ini[entry]:
            try:
                dictionary[entry].__dict__[key] = int(ini[entry][key])
            except ValueError:
                try:
                    if ini[entry][key][0] is '"':
                        ini[entry][key] = ini[entry][key][1:]
                    if ini[entry][key][-1] is '"':
                        ini[entry][key] = ini[entry][key][:-1]   
                    dictionary[entry].__dict__[key] = ini[entry][key]
                except IndexError:
                    dictionary[entry].__dict__[key] = ''
            dictionary[entry].id = entry     
    return dictionary
Пример конфиг-фала:
Code
1
2
3
4
5
6
7
[pair1]
src = C:\PROJECTS
dst = C:\My Dropbox
 
[pair2]
src = G:\Проекты\Фотошоп
dst = C:\My Dropbox\Творчество
Файлы из src сравниваются по времени модификации с файлами из dst (если те вообще существуют) и если надо копируются/обновляются.
0
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 14
10.12.2010, 09:12  [ТС]
Скажите, а вас не затруднит, написать мне последовательность действий- ход мысли.Я так понимаю сохраняются те которые были изменены или удалены?Они сохраняються на отдельныую машину?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.12.2010, 09:12
Помогаю со студенческими работами здесь

Скрипт резервного копирования
Помогите, пожалуйста, написать скрипт резервного копирования заданной директории, имя архива должно содержать текущую дату. Буду очень...

Покритикуйте мой скрипт резервного копирования файлов
Покритикуйте мой скрипт, создающий резервные копии всех файлов текущего каталога и перемещающий их в новый каталог. #!/bin/sh ...

Не работает скрипт резервного копирования для новых файлов
find . -type f -mtime -10 -print0 | xargs -0 tar -cjf archive.tar.bz2 Не пашет на рабочем проект (добавилось порядка 2к картинок) -...

Скрипт автоматизации резервного копирования баз данных Firebird/InterBase
Опубликовал статью в блоге Комплексная автоматизация резервного копирования баз данных Firebird/InterBase на Windows-серверах. Возможно...

Скрипт "Утилита резервного копирования"
Создать bat с 2-мя параметрами. Первый - адрес каталога, второй - адрес создания резервной копии. Всё должно быть заархивировано. Название...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru