Скрипт 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.   Матиас сказал

    Привет, как ты?
    Сценарий понравился, очень простой.
    Без обид, я внес некоторые изменения, чтобы сделать его более простым и читабельным, в дополнение к поддержке Python 2 и 3 (в настоящее время он может работать только на Python 2)

    Я оставляю вам ссылку с 2 версиями, если вам интересно.
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    Дандутрех сказал

      Отличные моды и я рад, что вам понравился сценарий

  2.   Nifosio сказал

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

    Кстати, отступ в коде неправильный, проверьте свои петли, и я не имею в виду петли для волос

    1.    Дандутрех сказал

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

    2.    tr сказал

      Эй, научись ценить и вместо критики исправлять, если ты так хвастаешься.

      1.    Дандутрех сказал

        Точно, Матиас внес большие изменения. Безусловно, сценарий можно улучшить, и именно об этом он говорит в мире сотрудничества, и именно это выразил Матиас. Жалко, что здесь есть люди, которые портят благоприятную атмосферу, которая должна преобладать. Вот они.

    3.    Abaddon s сказал

      Считаете ли вы, что грубая критика полезна и что она ничего не добавляет к скрипту? ЛУЧШЕ НЕ НАПИШИТЕ ГРАБАНЫЙ СЦЕНАРИЙ И ПОДЕЛИТЬСЯ !!!!!!

  3.   Понятия не имею сказал

    Вот другая версия: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    Прокомментируйте те ошибки, которые у меня есть, я исправлю (сейчас я в windows и не смог проверить).

  4.   zetaka01 сказал

    Я использую rsync напрямую со сценарием оболочки, без использования python.
    Я помещаю строку для каждого каталога источника и назначения.
    У меня есть несколько скриптов в зависимости от устройства, на котором я делаю копию, в моем случае инкрементальную.
    Например, чтобы скопировать мои книги на USB-накопитель 128 МБ, который по умолчанию установлен в
    / 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.    Дандутрех сказал

      Фернандо, без резкости и, если вы не против ответить, мне любопытно, почему вы используете Gnu / Linux. Спасибо и всего наилучшего

  9.   zetaka01 сказал

    Что ж, графический интерфейс очень удобен, но он не дает вам возможностей, которые дает вам полная команда.
    Кроме того, я не делаю это для измерения, скрипт, будь то оболочка или питон или что угодно, позволяет вам запрограммировать его для запуска в любое время.
    Ах, в вашем дистрибутиве linux у вас должны быть без проблем в репозиториях rsync и grsync.
    Приветствие.

  10.   zetaka01 сказал

    Ах, Фернандо, если вы используете Linux с 2008 года и не знаете, как запускать скрипт, у меня нет слов.
    приветствия

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

    Па здесь все системные инженеры, которые критикуют скрипт, который кто-то делает для сотрудничества, и использовать ли консоль / скрипт или что-то еще?

    Как много дерьма пердеть, ради бога.

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

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

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

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

    Благодаря этому вы получаете мобильность, скрипт работает в любой среде, будь то Linux, Windows или OS X.

  12.   ДэнДутрех сказал

    Спасибо, Гонсало. Ваше предложение, я считаю, очень хорошее, и я собираюсь включить его в сценарий. приветствие