使用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.   丹·杜特雷奇 他說:

    謝謝,貢薩洛我認為您的建議很好,我將其放入腳本中。 一聲問候