使用rsync进行本地备份的Python脚本

在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. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   马蒂亚斯

    你好,你好吗?
    我喜欢这个脚本,非常简单。
    没冒犯,我进行了一些修改,以使其更简单易读,并支持Python 2和3(当前只能在Python 2中运行)。

    如果您有兴趣,我会留下两个版本的链接。
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    丹杜特雷奇

      很棒的模组,很高兴您喜欢该脚本

  2.   尼福西奥

    意图得到赞赏,但结果是发粘和香肠。
    我四岁的侄女比您在这里放置的马铃薯能够制作更加智能和可配置的脚本。

    顺便说一句,代码的缩进是错误的,请检查您的循环,我不是故意的

    1.    丹杜特雷奇

      该脚本可以完美运行,我已经使用了很长时间,实际上,由于共享它的人数众多,它不应该像您所说的那样糟糕。 也许您应该打电话给侄女,看看您是否正确放置了所有东西

    2.    tr

      嘿,如果吹牛那么多,那就要学会珍惜,而不要批评,要纠正。

      1.    丹杜特雷奇

        恰好tr,马蒂亚斯(Matias)进行了一些重大修改。 当然,可以改进脚本,这就是在协作世界中要解决的问题,这就是Matias表示的方式。 遗憾的是,有人在这里打扰了应该占上风的良好氛围。 在那里。

    3.    亚巴顿

      您认为粗鲁的批评有用吗,并且对笔录没有任何帮助?更好的是,您不要写他妈的脚本并分享它!!!!!!!

  3.   我不知道

    这里是另一个版本: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    评论您遇到的错误,我将纠正它(现在我在Windows中,无法测试)。

  4.   泽塔卡01

    好吧,我直接将rsync与shell脚本一起使用,而不使用python。
    我在每个源目录和目标目录中都放置了一行。
    根据制作副本的设备,我有几个脚本,在本例中为增量脚本。
    例如,要将我的图书复制到默认情况下安装的128MB USB中,
    / media / zetaka01 / Sandisk128我在脚本LibrosAusb128.sh中输入了以下内容:

    rsync -av –delete /主页/ zetaka01 /书籍/媒体/ zetaka01 / Sandisk128 /

    如果目标目录不存在,它将为您创建该目录,然后从目标目录中删除源目录中不存在的目录,这是递归的。
    问候。

  5.   泽塔卡01

    啊,一个复制/粘贴–删除错误,带有两个连字符。

    问候

  6.   丹杜特雷奇

    您要创建图形界面吗? 我已经看到了Tkinter和Tix的可能性,但是对于目录选择的控制也许Wx更好

  7.   泽塔卡01

    已经有一个基于GTK的图形界面,称为grsync。
    我离开了维基百科的链接, https://en.wikipedia.org/wiki/Grsync
    问候。

  8.   费尔南多

    大家好。 脚本可能是美妙的,也可能是简单的,我不知道也不在乎,但是事情可以用千种方式来表达,什么时候可以很好地表达,为什么要说错呢? 话虽如此,我必须说我自2008年以来一直是Linux用户,尽管这段时间我一直学习缓慢,而且我很难理解很多事情,包括如何运行脚本(我知道这很容易,但是不再提供任何帮助)。 通过编译程序等安装程序。 这就是为什么当我看到有一个带有图形界面的版本时,我已经查找并找到了该页面,他们甚至可以咀嚼所有内容。 对于笨拙的服务器,我将其留在这里。 问候和感谢您的努力。
    http://www.opbyte.it/grsync/download.html

    1.    丹杜特雷奇

      fernando,没有任何争执,如果您不介意回答,我很好奇您为什么使用Gnu / Linux。 谢谢和最好的问候

  9.   泽塔卡01

    好的,图形界面非常友好,但是它没有为您提供完整命令所提供的选项。
    另外,我也不是要衡量它,而是一个脚本,无论是shell还是python或任何您想要的东西,都可以让您对它进行编程以使其在需要时运行。
    嗯,在您的Linux发行版中,您应该具有rsync和grsync,而在存储库中没有问题。
    问候。

  10.   泽塔卡01

    啊,费尔南多,如果您自2008年以来一直在使用linux,并且您不知道如何运行脚本,那我无言以对。
    问候

  11.   贡萨洛·马丁内斯

    Pa在这里的所有系统工程师都会批评某人协作编写的脚本,以及是否使用控制台/脚本或其他工具?

    看在上帝的份上放屁多少屎。

    我已经管理Linux服务器已有10年了,事实是,使用脚本执行一切操作的电子安装是在不久前发生的,例如,为了管理Bacula,我更喜欢使用图形界面而不是shell来假装很重要,这实际上是一种犯罪媒介。

    一个人必须富有成效,如果有人对通过界面进行操作感到更自在,对他来说很重要,那就是结果,而不是您如何做。

    在我之前的工作中,我指导一家公司的IT部门,负责人要求他做一些具体的事情,我对结果很感兴趣,他没有说«在apache中配置另一个虚拟主机,在终端中使用无颜色的vi 30×20英寸”,他会按照自己最舒适的方式进行操作,如果这个家伙更喜欢这样做,通过SFTP进行安装并使用Windows记事本,或者为我们的父亲祈祷,只要他做对了,我就不在乎。

    dandutrech,脚本实现了它的目标,这很重要,现在我要更改的是,它不是从shell调用命令,而是突然使用Python-librsync,这是一个在其中使用rsync函数的库蟒蛇。

    有了这种可移植性,该脚本可以在任何环境中运行,无论是Linux,Windows还是OSX。

  12.   丹·杜特雷奇

    谢谢,贡萨洛我认为您的建议非常好,我将其放入脚本中。 一声问候