Skrypt w Pythonie do lokalnych kopii zapasowych z rsync

W Gnu / Linux są różne programy do wykonywania kopii zapasowych, ale osobiście lubię proste rzeczy, z dala od interfejsów graficznych (które oczywiście nie mają nic złego, ale jeśli mogę ich uniknąć, unikam).
W poleceniu rsync jest potężny sojusznik kopii zapasowych, o których często zapominamy. Ma wystarczająco dużo opcji, aby wykonać kopię ze wszystkimi niezbędnymi wymaganiami. komputer-767784_640

Poniższy skrypt w języku Python tworzy w tym celu kopie zapasowe. Zobaczysz, że jest to niezwykle proste i nawet dla tych, którzy absolutnie nie mają pojęcia o tym języku, dodanie linii skryptu do synchronizacji nowego katalogu jest natychmiastowe.
W moim komputerze używam zewnętrznego dysku twardego, który nazwałem IOmega_HDD, w twoim przypadku możesz zmienić jego nazwę w skrypcie zgodnie z twoim przypadkiem.
Inną rzeczą jest dodanie lub usunięcie katalogów z kopii. W tym samym skrypcie, co w wierszu komentarza, wyjaśniono, jak to zrobić.
Aby zautomatyzować zadanie, możesz dodać linię do crontab zawierającą interpreter języka Python i ścieżkę, w której chcesz umieścić skrypt. Mam nadzieję, że ci się przyda.

ostrzeżenie: edytor wordpress nie zezwala na odstępy na początku wiersza, przez co niezbędne wcięcia w skrypcie zostały utracone, więc puste spacje zastąpiłem punktami (.), które należy usunąć za pomocą edytora i zastąpić spacjami .

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

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


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Matias powiedział

    Witam, jak się masz?
    Podobał mi się scenariusz, bardzo prosty.
    Bez obrazy, wprowadziłem pewne modyfikacje, aby było prostsze i bardziej czytelne, a także wspierałem Python 2 i 3 (obecnie można go uruchomić tylko w Pythonie 2)

    Zostawiam ci link z 2 wersjami, na wypadek gdybyś był zainteresowany.
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    Dandutrich powiedział

      Świetne mody i cieszę się, że skrypt Ci się podoba

  2.   niphosio powiedział

    Zamiar jest doceniany, ale wynik jest lepki i kiełbaski.
    Moja 4-letnia siostrzenica jest w stanie stworzyć bardziej inteligentny i konfigurowalny skrypt niż ten ziemniak, który tu umieściłeś.

    Nawiasem mówiąc, wcięcie kodu jest złe, sprawdź swoje pętle i nie mam na myśli włosowych

    1.    Dandutrich powiedział

      Skrypt działa idealnie, używam go od dłuższego czasu i tak naprawdę ze względu na liczbę osób, które go udostępniają, nie powinien być tak gówniany, jak mówisz. Może powinieneś zadzwonić do swojej siostrzenicy, aby sprawdzić, czy wszystko ułożyłeś poprawnie

    2.    tr powiedział

      Hej, naucz się cenić i zamiast krytykować, poprawiaj, jeśli tak bardzo się chwalisz.

      1.    Dandutrich powiedział

        Dokładnie tr, Matias dokonał kilku świetnych modyfikacji. Z pewnością scenariusz można poprawić i o to właśnie chodzi w świecie współpracy i to właśnie wyraził Matias. Szkoda, że ​​są tu ludzie, którzy psują dobrą atmosferę, która powinna panować. Tam oni.

    3.    abaddon s powiedział

      Czy uważasz, że niegrzeczna krytyka jest przydatna i nie dodaje niczego do scenariusza? LEPIEJ NIE PISZ KURWA SKRYPTU I UDOSTĘPNIAJ GO !!!!!!!

  3.   Nie wiem powiedział

    Tutaj inna wersja: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    Skomentuj błędy jakie mam, poprawię to (teraz jestem w windowsie i nie mogłem tego przetestować).

  4.   zetaka01 powiedział

    Cóż, używam rsync bezpośrednio ze skryptem powłoki, bez używania Pythona.
    Umieściłem wiersz dla każdego katalogu źródłowego i docelowego.
    Mam kilka skryptów w zależności od urządzenia, na którym wykonuję kopię, w moim przypadku inkrementalną.
    Na przykład, aby skopiować moje książki na dysk USB o pojemności 128 MB, który jest domyślnie instalowany w
    / media / zetaka01 / Sandisk128 Umieściłem w skrypcie LibrosAusb128.sh następującą linię:

    rsync -av –delete / home / zetaka01 / Books / media / zetaka01 / Sandisk128 /

    Jeśli katalog docelowy nie istnieje, tworzy go dla Ciebie i usuwa z miejsca docelowego to, czego nie ma w źródle, oczywiście rekurencyjnie.
    Pozdrowienia.

  5.   zetaka01 powiedział

    Ach, błąd kopiuj / wklej – usuń, z dwoma łącznikami.

    pozdrowienia

  6.   Dandutrich powiedział

    Chcesz stworzyć interfejs graficzny? Widziałem możliwości Tkinter i Tix, ale do kontroli wyboru katalogów być może Wx jest lepszy

  7.   zetaka01 powiedział

    Istnieje już interfejs graficzny oparty na GTK, nazywa się grsync.
    Zostawiam link do Wikipedii, https://en.wikipedia.org/wiki/Grsync
    Pozdrowienia.

  8.   fernando powiedział

    Cześć wszystkim. Scenariusz może być cudem lub prostotą, której nie znam lub nie obchodzi mnie, ale rzeczy można powiedzieć na tysiące sposobów, a kiedy można to powiedzieć dobrze, po co mówić źle? Powiedziawszy to, muszę powiedzieć, że jestem użytkownikiem Linuksa od 2008 roku i pomimo tego całego czasu powoli się uczę i trudno jest mi zrozumieć wiele rzeczy, w tym, jak uruchomić skrypt (wiem, że to łatwe, ale nie nie dawać więcej). instaluj programy, kompilując je itp. itp. Dlatego kiedy przeczytałem, że istnieje wersja z interfejsem graficznym, przeszukałem i znalazłem tę stronę, na której nawet dają ci wszystko przeżute. Dla niezdarnych jako serwer zostawiam to tutaj. Pozdrawiam i dziękuję za wysiłek.
    http://www.opbyte.it/grsync/download.html

    1.    Dandutrich powiedział

      Fernando, bez żadnych ostrych zgrzytów i jeśli nie masz nic przeciwko odpowiedzi, jestem ciekawy, dlaczego używasz Gnu / Linuksa. Dziękuję i pozdrawiam

  9.   zetaka01 powiedział

    Cóż, interfejs graficzny jest bardzo przyjazny, ale nie daje ci opcji, które daje ci pełne polecenie.
    Ponadto nie jest moim przypadkiem, że robię to na potrzeby pomiaru, a skrypt, czy to powłoka, python czy cokolwiek chcesz, pozwala zaprogramować go tak, aby działał w dowolnym momencie.
    Ach, w swojej dystrybucji Linuksa powinieneś mieć rsync i grsync bez problemów w repozytoriach.
    Pozdrowienia.

  10.   zetaka01 powiedział

    Ah Fernando, jeśli używasz Linuksa od 2008 roku i nie wiesz, jak uruchomić skrypt, nie mam słów.
    pozdrowienia

  11.   Gonzalo martinez powiedział

    Pa, czy wszyscy inżynierowie systemów tutaj krytykują skrypt, który ktoś robi, aby współpracować, i czy używać konsoli / skryptu, czy czegokolwiek?

    Ile gówna pierdnąć na Boga.

    Od 10 lat zarządzam serwerami linuksowymi, a prawda jest taka, że ​​elektroniczna erekcja robienia wszystkiego ze skryptami minęła mi jakiś czas temu np. Do administrowania Baculą wolę używać interfejsu graficznego niż powłoki, ważne, co jest naprawdę środkiem kryminalnym.

    Trzeba być produktywnym, jeśli ktoś czuje się bardziej komfortowo, robiąc to przez interfejs, cóż, dla niego liczy się wynik, a nie sposób, w jaki się to robi.

    W mojej poprzedniej pracy kierowałem obszarem IT firmy, a osoby odpowiedzialne poprosiły go o zrobienie czegoś konkretnego, byłem zainteresowany wynikiem, nie powiedział: „Skonfiguruj innego vhosta w apache, używając vi bez koloru w terminalu 30 × 20 ”, że robi to tak, jak mu najwygodniej, gdyby facet wolał to robić tak, montując przez SFTP i korzystając z okienkowego notatnika, czy modląc się do naszego Ojca, nie przejmowałem się tak długo zrobił to dobrze.

    dandutrech, skrypt spełnia swój cel, co jest ważne, teraz zmieniłbym to, że zamiast wywoływać polecenie z powłoki, nagle używałby Python-librsync, który jest biblioteką do używania funkcji rsync w Pyton.

    Dzięki temu zyskujesz przenośność, skrypt działa w dowolnym środowisku, czy to Linux, Windows czy OS X.

  12.   Danholenderski powiedział

    Dzięki, Gonzalo. Uważam, że Twoja sugestia jest bardzo dobra i zamierzam umieścić ją w scenariuszu. pozdrowienie