Скрипт 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.   ДанДутрех - сказав він

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