rsyncを使用したローカルバックアップ用のPythonスクリプト

Gnu / Linuxにはバックアップを実行するためのさまざまなプログラムがありますが、個人的にはグラフィカルインターフェイスからはほど遠い単純なものが好きです(もちろん問題はありませんが、使用を避けることができれば避けま​​す)。
rsyncコマンドには、私たちが忘れがちなバックアップの手ごわい味方がいます。 必要なすべての要件を備えたコピーを作成するのに十分なオプションがあります。 コンピューター-767784_640

次のpythonスクリプトは、この目的のためにバックアップコピーを作成します。 それは非常に単純であり、この言語をまったく知らない人でも、新しいディレクトリを同期するためのスクリプトの行をすぐに追加することがわかります。
私のマシンでは、IOmega_HDDと呼ばれる外部ハードディスクを使用しています。あなたの場合は、スクリプトで名前を変更できます。
もうXNUMXつは、コピーからディレクトリを追加または削除することです。 コメント行と同じスクリプトで、その方法が説明されています。
タスクを自動化するために、pythonインタープリターとスクリプトを配置するパスを含む行をcrontabに追加できます。 お役に立てば幸いです。

警告:ワードプレスエディタでは行頭にスペースを入れることができないため、スクリプトで必要なインデントが失われているため、空白スペースをピリオド(。)に置き換えました。これは、エディタで削除してスペースに置き換える必要があります。

———————————————————————————————
# -*- 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. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   マティアス

    こんにちは、元気ですか?
    とてもシンプルなスクリプトが気に入りました。
    不快感はありません。Python2と3をサポートするだけでなく、よりシンプルで読みやすくするためにいくつかの変更を加えました(現在はPython 2でのみ実行できます)

    興味のある方のために、2つのバージョンへのリンクを残しておきます。
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    ダンドゥトレック

      素晴らしい改造と私はあなたがスクリプトを気に入ってくれてうれしいです

  2.   にほしお

    意図はありがたいですが、結果は粘着性とソーセージです。
    私の4歳の姪は、あなたがここに置いたこのポテトよりもインテリジェントで構成可能なスクリプトを作成することができます。

    ちなみに、コードのインデントが間違っています。ループを確認してください。髪の毛のループではありません。

    1.    ダンドゥトレック

      スクリプトは完璧に機能します。私は長い間使用してきました。実際、スクリプトを共有する人の数が多いため、あなたが言うほどくだらないことはないはずです。 多分あなたはあなたがすべてを正しく置いたかどうか見るためにあなたの姪に電話するべきです

    2.    tr

      ねえ、あなたがそんなに自慢するなら、価値を認めることを学び、批判する代わりに、正しい。

      1.    ダンドゥトレック

        まさにtr、マティアスはいくつかの素晴らしい変更を加えました。 確かに、スクリプトは改善することができ、それがコラボレーションの世界でのことであり、それがマティアスがそれを表現した方法です。 個人がこの辺りにいて、勝つべき良い雰囲気を酸っぱくするのは残念です。 そこに彼ら。

    3.    アバドンs

      失礼な批判は有用であり、それはスクリプトに何も貢献しないと思いますか?より良いスクリプトを書いてそれを共有しないでください!!!!!!!

  3.   私は知らないよ

    ここに別のバージョン: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    私が持っているエラーにコメントしてください、私はそれを修正します(今私はウィンドウズにいて、それをテストすることができませんでした)。

  4.   ゼタカ01

    さて、私はpythonを使用せずに、シェルスクリプトでrsyncを直接使用します。
    ソースディレクトリと宛先ディレクトリごとにXNUMX行ずつ配置します。
    コピーを作成するデバイスに応じて、いくつかのスクリプトがあります。私の場合はインクリメンタルです。
    たとえば、私の本をデフォルトでインストールされている128MBのusbにコピーするには
    / media / zetaka01 / Sandisk128スクリプトLibrosAusb128.shに次の行を入力しました。

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

    宛先ディレクトリが存在しない場合は、宛先ディレクトリが作成され、もちろん、元のディレクトリにないものが宛先から削除されます。
    挨拶。

  5.   ゼタカ01

    ああ、XNUMXつのハイフンが付いたコピー/貼り付け–削除エラー。

    拝啓

  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.    ダンドゥトレック

      フェルナンド、何の苦痛もなく、答えても構わないのなら、なぜGnu / Linuxを使うのか興味があります。 よろしくお願いします

  9.   ゼタカ01

    グラフィカルインターフェイスは非常に使いやすいですが、完全なコマンドが提供するオプションは提供されません。
    また、私が測定するためにそれを行うのは私の場合ではありません。シェルまたはpythonのいずれか、または任意のスクリプトを使用すると、いつでも実行するようにプログラムできます。
    ああ、あなたのlinuxディストリビューションでは、リポジトリに問題なくrsyncとgrsyncがあるはずです。
    挨拶。

  10.   ゼタカ01

    ああフェルナンド、2008年からLinuxを使用していて、スクリプトの実行方法がわからない場合は、言葉がありません。
    拝啓

  11.   ゴンサロ・マルティネス

    Paはここにいるすべてのシステムエンジニアで、誰かが共同作業を行うために行うスクリプトを批判しています。コンソール/スクリプトなどを使用するかどうか。

    神のためにどれだけおしゃべりするのか。

    私はLinuxサーバーを10年間管理してきましたが、実は、スクリプトを使ってすべてを行うという電子的な構築は、たとえばBaculaを管理するために、ずっと前に私に起こりました。私はシェルよりもグラフィカルインターフェイスを使用して、重要なふりをすることを好みます。これは本当に犯罪です。 。

    誰かがインターフェースを介してそれをより快適に行うことができると感じた場合、彼にとって重要なのは結果であり、あなたがそれをどのように行うかではありません。

    私の前の仕事で私は会社のIT領域を監督しました、そして担当者は彼に特定のことをするように頼みました、私は結果に興味がありました、彼は言いませんでした«端末で色のないviを使用して、apacheで別のvhostを構成します30×20」、彼が最も快適な方法でそれを行うこと、彼がそのようにそれを行うことを好む場合、SFTPでマウントして窓のメモ帳を使用するか、または私たちの父に祈るなら、彼が正しくそれをする限り私は気にしませんでした。

    dandutrech、スクリプトはその目的を果たします。これは重要なことです。ここで変更するのは、シェルからコマンドを呼び出す代わりに、突然Python-librsyncを使用することです。これは、内部のrsync関数を使用するためのライブラリです。 Python。

    これにより、移植性が向上し、スクリプトはLinux、Windows、OSXなどのあらゆる環境で実行されます。

  12.   ダンドゥトレヒ

    ありがとう、ゴンザロ。 あなたの提案はとても良いと思います。それをスクリプトに入れます。 挨拶