Python script para sa mga lokal na pag-backup na may rsync

Sa Gnu / Linux mayroong iba't ibang mga programa upang maisakatuparan ang backup ngunit personal na gusto ko ang mga simpleng bagay, malayo sa mga grapikong interface (na walang mali, syempre, ngunit kung maiiwasan kong gamitin ito, iniiwasan ko).
Sa utos ng rsync mayroong isang kakila-kilabot na kakampi ng mga pag-backup na madalas nating kalimutan na gawin. Mayroon itong sapat na mga pagpipilian upang makagawa ng isang kopya kasama ang lahat ng kinakailangang mga kinakailangan. computer-767784_640

Ang sumusunod na python script ay gumagawa ng mga backup na kopya para sa hangaring ito. Makikita mo na ito ay lubos na simple at kahit para sa mga walang ganap na ideya sa wikang ito, agaran ang pagdaragdag ng isang linya para sa script na mai-synchronize ang isang bagong direktoryo.
Sa aking machine ay gumagamit ako ng isang panlabas na hard disk na tinawag ko na IOmega_HDD, sa iyong kaso maaari mo itong palitan ng pangalan sa script alinsunod sa iyong kaso.
Ang isa pang bagay ay upang magdagdag o mag-alis ng mga direktoryo mula sa kopya. Sa parehong script tulad ng linya ng komento ipinaliwanag kung paano ito gawin.
Upang i-automate ang gawain maaari kang magdagdag ng isang linya sa crontab na naglalaman ng tagasalin ng sawa at ang landas kung saan mo nais na ilagay ang script. Umaasa ako na ito ay kapaki-pakinabang sa iyo.

Babala: hindi pinapayagan ng editor ng wordpress ang isang spacing sa simula ng linya, kaya nawala ang kinakailangang indentation sa script, kaya pinalitan ko ang mga blangko na puwang ng mga panahon (.) na dapat mong alisin sa isang editor at palitan ng mga puwang .

———————————————————————————————-
# -*- 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"

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


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Matias dijo

    Kumusta ka?
    Nagustuhan ko ang script, napaka-simple.
    Walang pagkakasala, gumawa ako ng ilang mga pagbabago upang gawing mas simple at mas madaling mabasa, pati na rin ang pagsuporta sa Python 2 at 3 (kasalukuyang maaari lamang itong patakbuhin sa Python 2)

    Iiwan ko sa iyo ang link sa 2 bersyon, kung sakaling interesado ka.
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    dandutrich dijo

      Mahusay na mga mod at natutuwa ako na gusto mo ang script

  2.   niphosio dijo

    Ang intensyon ay pinahahalagahan, ngunit ang resulta ay maingat at sausage.
    Ang aking 4 na taong pamangkin na babae ay may kakayahang gumawa ng isang mas matalinong at mai-configure na script kaysa sa patatas na inilagay mo rito.

    Sa pamamagitan ng ang paraan, ang indentation ng code ay mali, suriin ang iyong mga loop at hindi ko ibig sabihin ang mga buhok

    1.    dandutrich dijo

      Ang script ay perpektong gumagana, matagal ko nang ginagamit ito at, sa katunayan, dahil sa bilang ng mga taong nagbabahagi nito, hindi ito dapat maging masama tulad ng sinabi mo. Siguro dapat mong tawagan ang iyong pamangking babae upang makita kung inilagay mo nang tama ang lahat

    2.    tr dijo

      Hoy, alamin mong pahalagahan at sa halip na pumuna, itama, kung magyabang ka.

      1.    dandutrich dijo

        Mismong tr, Matias ay gumawa ng ilang mahusay na pagbabago. Tiyak na ang script ay maaaring mapabuti at iyon ang tungkol sa mundo ng pakikipagtulungan at iyan ang paraan kung paano ito ipinahayag ni Matias. Ito ay isang awa na ang mga indibidwal ay nasa paligid dito upang maasim ang magandang kapaligiran na dapat manaig. Nandun sila.

    3.    abaddon s dijo

      Sa palagay mo ba ay kapaki-pakinabang ang isang bastos na pagpuna at na hindi ito nagdaragdag ng anupaman sa script? MAS MABUTI HINDI KA NAMAN NAGSULAT NG ISANG FUCKING SCRIPT AT Ibinahagi IT !!!!!!!

  3.   Hindi ko alam dijo

    Narito ang isa pang bersyon: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    I-comment ang mga error na mayroon ako, itatama ko ito (ngayon ay nasa windows ako at hindi ko ito masubukan).

  4.   zetaka01 dijo

    Sa gayon ay gumagamit ako ng rsync nang direkta sa isang shell script, nang hindi gumagamit ng sawa.
    Naglalagay ako ng isang linya para sa bawat direktoryo ng mapagkukunan at patutunguhan.
    Mayroon akong maraming mga script depende sa aparato kung saan ko ginagawa ang kopya, sa aking kaso na incremental.
    Halimbawa, upang makopya ang aking mga libro sa isang 128MB usb na na-install bilang default sa
    / media / zetaka01 / Sandisk128 Inilagay ko sa script na LibrosAusb128.sh ang sumusunod na linya:

    rsync -av –delete / home / zetaka01 / Mga Libro / media / zetaka01 / Sandisk128 /

    Kung ang direktoryo ng patutunguhan ay walang, nilikha ito para sa iyo at tinatanggal mula sa patutunguhan kung ano ang wala sa pinagmulan, recursively syempre.
    Isang pagbati.

  5.   zetaka01 dijo

    Ah, isang kopya / i-paste –delete error, na may dalawang gitling.

    Isang pagbati

  6.   dandutrich dijo

    Nais mo bang lumikha ng isang graphic na interface? Nakita ko ang mga posibilidad ng Tkinter at Tix ngunit para sa kontrol ng pagpili ng mga direktoryo marahil ay mas mahusay ang Wx

  7.   zetaka01 dijo

    Mayroon nang isang graphic na interface batay sa GTK, ito ay tinatawag na grsync.
    Iniwan ko ang link sa Wikipedia, https://en.wikipedia.org/wiki/Grsync
    Isang pagbati.

  8.   Fernando dijo

    Kumusta po sa lahat Ang script ay maaaring maging isang kamangha-mangha o isang pagiging simple, hindi ko alam o pakialam, ngunit ang mga bagay ay masasabi sa isang libong paraan at kung masasabi nilang mabuti, bakit masabing mali ang mga ito? Sinabi nito, sasabihin ko na ako ay isang gumagamit ng Linux mula pa noong 2008 at sa kabila ng lahat ng oras na ito ay mabagal akong matuto at napakahirap para sa akin na maunawaan ang maraming mga bagay, kasama ang kung paano magpatupad ng isang script (madaling alam ko ngunit isa ay hindi nagbibigay ng higit pa). mag-install ng mga programa sa pamamagitan ng pag-iipon ng mga ito atbp atbp. Iyon ang dahilan kung bakit nang mabasa ko na mayroong isang bersyon na may isang grapikong interface, hinanap ko at nahanap ang pahinang ito kung saan binibigyan ka nila ng lahat ng nginunguya. Para sa malamya bilang isang server naiwan ko ito dito Pagbati at salamat sa iyong pagsisikap.
    http://www.opbyte.it/grsync/download.html

    1.    dandutrich dijo

      fernando, nang walang anumang akronim at kung hindi mo alintana ang pagsagot, nacucyoso ako kung bakit mo ginagamit ang Gnu / Linux. Salamat at pagbati

  9.   zetaka01 dijo

    Sa gayon, ang isang grapikong interface ay napaka magiliw ngunit hindi ito bibigyan ka ng mga pagpipilian na ibinibigay sa iyo ng isang buong utos.
    Gayundin, hindi ito ang aking kaso na ginagawa ko ito upang masukat, isang script, maging shell o sawa o kahit anong gusto mo, ay nagbibigay-daan sa iyo upang i-program ito upang tumakbo kahit kailan mo gusto.
    Ah, sa iyong linux distro dapat kang magkaroon ng rsync at grsync nang walang mga problema sa mga repository.
    Isang pagbati.

  10.   zetaka01 dijo

    Ah Fernando, kung gumagamit ka ng linux mula pa noong 2008 at hindi mo alam kung paano magpatakbo ng isang script, wala akong mga salita.
    Isang pagbati

  11.   Gonzalo Martinez dijo

    Pa ang lahat ng mga inhinyero ng system dito na pumupuna sa script na ginagawa ng isang tao upang makipagtulungan, at kung gagamit ng console / script o kung ano pa man?

    Kung magkano ang tae na umut-ot para sa diyos.

    Pinamamahalaan ko ang mga server ng Linux sa loob ng 10 taon, at ang totoo ay ang elektronikong pagtayo ng paggawa ng lahat sa mga script ay lumipas sa akin ilang sandali, halimbawa, upang pangasiwaan ang Bacula, mas gusto kong gamitin ang graphic na interface kaysa sa shell upang magpanggap na mahalaga, na kung saan ay talagang isang kriminal na paraan.

    Ang isa ay dapat na maging produktibo, kung ang isang tao ay nararamdaman na mas komportable itong gawin sa pamamagitan ng interface, mabuti para sa kanya, ang mahalaga ay ang resulta, hindi kung paano mo ito ginagawa.

    Sa dati kong trabaho ay diniretso ko ang lugar ng IT ng isang kumpanya, at hiniling sa kanya ng mga taong namamahala na gumawa ng isang bagay na partikular, interesado ako sa resulta, hindi niya sinabi «I-configure ang isa pang vhost sa apache, gamit ang vi na walang kulay sa isang terminal na 30 × 20 ", na ginagawa niya ito bilang pinaka komportable siya, kung ginugusto ng lalaki na gawin ito ng ganoon, pag-mount ng SFTP at paggamit ng windows notepad, o pagdarasal sa aming Ama, wala akong pakialam basta tama ang ginawa

    dandutrech, natutupad ng script ang layunin nito, na kung saan ay ang mahalagang bagay, ngayon kung ano ang babaguhin ko ay sa halip na mag-utos ng utos mula sa shell, bigla itong gumagamit ng Python-librsync, na isang silid aklatan upang magamit ang mga pagpapaandar ng rsync sa loob ng Python .

    Na nakakuha ka ng kakayahang dalhin, ang script ay tumatakbo sa anumang kapaligiran, maging sa Linux, Windows o OS X.

  12.   dandutrecht dijo

    Salamat, Gonzalo. Ang iyong mungkahi sa palagay ko ay napakahusay at ilalagay ko ito sa script. isang pagbati