Скрипт Python для локальних резервних копій за допомогою rsync

У Gnu / Linux існують різні програми для резервного копіювання, але особисто мені подобаються прості речі, далекі від графічних інтерфейсів (які, звичайно, не мають нічого поганого, але якщо я можу уникати його використання, я уникаю).
У команді rsync є грізний союзник резервних копій, який ми часто забуваємо робити. Він має достатньо варіантів для копіювання з усіма необхідними вимогами. комп'ютер-767784_640

Наступний сценарій python робить резервні копії для цієї мети. Ви побачите, що це надзвичайно просто, і навіть для тих, хто абсолютно не уявляє цієї мови, додавання рядка для сценарію для синхронізації нового каталогу відбувається негайно.
У своїй машині я використовую зовнішній жорсткий диск, який я назвав IOmega_HDD, у вашому випадку ви можете перейменувати його в сценарії відповідно до вашого випадку.
Інша справа - додати або видалити каталоги з копії. У тому ж сценарії, що і в рядку коментаря, пояснюється, як це зробити.
Для автоматизації завдання ви можете додати рядок до crontab, що містить інтерпретатор python та шлях, куди ви хочете помістити сценарій. Сподіваюся, це вам стане в нагоді.

попередження: редактор wordpress не допускає інтервал на початку рядка, таким чином, необхідний відступ у сценарії втрачено, тому я замінив порожні пробіли крапками (.), які ви повинні усунути редактором і замінити пробілами.

————————————————————————————————
# -*- coding: utf-8 -*-
import os
ruta_usuario=os.getcwd()
ruta_volumen="/media/Iomega_HDD" #Modificar según nombre de disco externo
directorio_destino=ruta_volumen + "/" + "RsyncBackup"
try:
....if os.path.exists(directorio_destino):
........pass
....else:
........os.mkdir(directorio_destino,0777)
....directorios_origen=[] ....rutas_directorios_origen=[] ....#Se añaden los directorios para sincronizar
....directorios_origen.append("Documentos")
....directorios_origen.append("Imágenes")
....directorios_origen.append("Descargas")
....#Añadir aquí otros directorios que se deseen sincronizar
....#o eliminar de las líneas anteriores los que no se deseen
....for rutas in directorios_origen:
....rutas_directorios_origen.append(ruta_usuario + "/" + rutas)
....for rutas in rutas_directorios_origen:
....print "Sincronizando " + rutas + " con " + directorio_destino
....os.system("rsync -ahv --progress" + " " + rutas + " " + directorio_destino)
....print "Proceso terminado"
except OSError:
print "Ha ocurrido un error ¿está el disco externo listo?"
except:
print "Ha ocurrido un error"

---------------------------


Зміст статті відповідає нашим принципам редакційна етика. Щоб повідомити про помилку, натисніть тут.

18 коментарі, залиште свій

Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Matias - сказав він

    Привіт як ти?
    Мені сподобався сценарій, дуже простий.
    Не ображаючись, я зробив деякі модифікації, щоб зробити його простішим і читабельнішим, а також підтримку Python 2 і 3 (на даний момент це можна було запустити лише в Python 2)

    Якщо ви зацікавлені, я залишаю вам посилання на 2 версії.
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    Дандутреч - сказав він

      Чудові моди, і я радий, що вам сподобався сценарій

  2.   ніфозіо - сказав він

    Намір оцінений, але результат липкий і ковбасний.
    Моя 4-річна племінниця здатна зробити більш розумний і настроюваний сценарій, ніж ця картопля, яку ви тут поклали.

    До речі, відступ коду неправильний, перевірте свої петлі, і я не маю на увазі волосся

    1.    Дандутреч - сказав він

      Сценарій працює ідеально, я використовую його вже давно, і насправді, через кількість людей, які ним діляться, він не повинен бути таким дерьмовим, як ти кажеш. Можливо, вам слід зателефонувати племінниці, щоб перевірити, чи правильно ви все поставили

    2.    tr - сказав він

      Гей, навчись цінувати і замість того, щоб критикувати, виправ, якщо ти так хвалишся.

      1.    Дандутреч - сказав він

        Саме, Matias зробив кілька великих модифікацій. Звичайно, сценарій можна вдосконалити, і саме про це йдеться у світі співпраці, і це висловив Матіас. Шкода, що люди тут поруч, щоб скислити гарну атмосферу, яка повинна панувати. Там вони.

    3.    абаддон с - сказав він

      Чи вважаєте ви, що груба критика корисна і що вона нічого не додає до сценарію? КРАЩЕ НЕ НАПИШІТЬ БЛОКУ СЦЕНАРІЮ І ПОДІЛИТЬСЯ !!!!!!!

  3.   Я не знаю - сказав він

    Ось інша версія: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    Прокоментуйте мої помилки, я їх виправлю (зараз я перебуваю у вікнах і не міг перевірити).

  4.   zetaka01 - сказав він

    Ну, я використовую rsync безпосередньо зі сценарієм оболонки, не використовуючи python.
    Я ставлю рядок для кожного каталогу джерела та призначення.
    У мене є кілька сценаріїв залежно від пристрою, на якому я роблю копію, в моєму випадку поступовий.
    Наприклад, щоб скопіювати мої книги на 128 Мб USB, який встановлено за замовчуванням у Windows
    / media / zetaka01 / Sandisk128 Я помістив у сценарій LibrosAusb128.sh такий рядок:

    rsync -av –delete / home / zetaka01 / Books / media / zetaka01 / Sandisk128 /

    Якщо каталог призначення не існує, він створює його для вас і видаляє з пункту призначення те, що не є початком, звичайно, рекурсивно.
    Привітання.

  5.   zetaka01 - сказав він

    Ах, помилка копіювання / вставлення - видалення з двома дефісами.

    вітання

  6.   Дандутреч - сказав він

    Ви хочете створити графічний інтерфейс? Я бачив можливості Tkinter і Tix, але для контролю вибору каталогів, можливо, Wx краще

  7.   zetaka01 - сказав він

    Вже існує графічний інтерфейс на основі GTK, він називається grsync.
    Я залишаю посилання на Вікіпедію, https://en.wikipedia.org/wiki/Grsync
    Привітання.

  8.   Фернандо - сказав він

    Привіт всім. Сценарій може бути дивом або простотою, яку я не знаю і не хвилюю, але речі можна говорити тисячами способів, і коли про них можна сказати добре, навіщо говорити про них неправильно? Сказавши це, я повинен сказати, що я користувач Linux з 2008 року, і, незважаючи на весь цей час, я повільно навчаюсь, і мені важко зрозуміти багато речей, включаючи те, як запускати скрипт (я знаю, що це легко, але один більше не дає). встановлювати програми шляхом їх компіляції тощо тощо. Ось чому, коли я прочитав, що існує версія з графічним інтерфейсом, я подивився і знайшов цю сторінку, де вони навіть все жують. Для незграбних як сервер я залишаю це тут. Вітаю та дякую за ваші зусилля.
    http://www.opbyte.it/grsync/download.html

    1.    Дандутреч - сказав він

      fernando, без будь-якої суперечки, і якщо ви не проти відповісти, мені цікаво, чому ви використовуєте Gnu / Linux. Дякую і всього найкращого

  9.   zetaka01 - сказав він

    Ну, графічний інтерфейс дуже зручний, але він не дає вам опцій, які дає вам повна команда.
    Крім того, це не мій випадок, коли я роблю це для вимірювання, скрипт, будь то оболонка чи python, або що завгодно, дозволяє вам запрограмувати його на запуск, коли завгодно.
    Ах, у вашому дистрибутиві Linux у вас повинні бути rsync і grsync без проблем у сховищах.
    Привітання.

  10.   zetaka01 - сказав він

    Ах, Фернандо, якщо ви використовуєте Linux з 2008 року і не знаєте, як запустити сценарій, у мене немає слів.
    вітання

  11.   Гонсало Мартинес - сказав він

    Чи всі системні інженери тут критикують сценарій, який хтось робить для співпраці, і якщо використовувати консоль / скрипт чи щось інше?

    Скільки лайна пердити для бога.

    Я керую серверами Linux протягом 10 років, і правда полягає в тому, що електронна ерекція всього, що робиться зі скриптами, передалася мені деякий час тому, наприклад, для адміністрування Bacula, я вважаю за краще використовувати графічний інтерфейс, ніж оболонку, щоб видавати себе за важливим, що насправді є злочинним засобом.

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

    На попередній роботі я керував ІТ-галуззю компанії, і відповідальні люди просили його зробити щось конкретне, мене цікавив результат, він не сказав «Налаштувати інший vhost в apache, використовуючи vi без кольору в терміналі 30 × 20 ”, що він робить це так, як йому найкомфортніше, якщо хлопець вважав за краще робити це так, монтуючи SFTP і використовуючи блокнот Windows, або молиться нашому Отцю, мені було все одно, поки він зробив це правильно.

    dandutrech, скрипт виконує свою мету, що є головним, тепер я б змінив те, що замість виклику команди з оболонки він раптом використовував би Python-librsync, яка є бібліотекою для використання функцій rsync в Python .

    Завдяки цьому ви отримуєте портативність, сценарій працює в будь-якому середовищі, будь то Linux, Windows або OS X.

  12.   ДанДутрех - сказав він

    Дякую, Гонсало. Ваша пропозиція, на мій погляд, дуже хороша, і я збираюся внести її в сценарій. вітання