web-dev-qa-db-ja.com

UbuntuバックアップはCPUの100%を消費します

Ubuntu用にプレインストールされたUbuntu BackupsソフトウェアとUbuntu 16.04 for Desktopを使用しています(ただし、おそらく同じ問題が古いUbuntuにもありました)。

enter image description here

(1日1回)起動するたびに、数分間CPUの100%を消費します。バックアップソフトウェアは静かで目に見えないはずだと思っていたので、これは非常に面倒です。

enter image description here

現在の処理にかかる時間の4〜5倍の時間がかかるが、CPUの消費が少なく、静かである場合は問題ありません。

BackupsソフトウェアまたはUbuntu用のより優れた代替バックアップソフトウェアにサイレントモードがありますか?

3
Andrea

正直なところ、あなたが使用しているプログラムについて聞いたことがありません。

個人的には、rsnapshothttp://rsnapshot.org/ )をバックアップのニーズに合わせて好みます。 Ubuntuパッケージは同じ名前です。

ハードリンクを使用するため、最初の実行時に多くのCPU時間を使用する場合がありますが、その後は使用しません。 (特に、バックアップ間で変更するファイルがほとんどない場合-これはほとんどの人に当てはまります。)同様に、時間の経過とともに多くのディスク領域を使用することはありません。

そうは言っても、夜中にバックアップをスケジュールします。そのため、構成ファイルをテストしているとき以外は、CPU時間に気付く機会はありません。これは、サーバーでこれを実行しているかどうかとは関係ありません。 rsnapshotはコマンドラインで実行できます。または、デスクトップにショートカットを作成できます。

もう1つの提案は、プログラムをreniceするだけで、低い優先度で実行することです。これを自動的に行う必要がある場合、短いbashプログラミングが必要になります。たとえば、 https://talk.maemo.org/showthread.php?t=3687 を参照するか、フレーズ「automatic renice」を検索してください。

私の頭の上では、それを行う方法がわかりませんが、私の推測では、あなたがする必要があるでしょう:

  • プロセスIDを見つけるbashスクリプトを書く
  • reniceを実行します
  • このスクリプトをcronjobに配置し、バックアップ開始直後に実行するか、繰り返し実行する(つまり、1時間ごと)

スクリプトは次のように見えるかもしれませんが、本当に頭の外にあるので、これをきれいにする必要があります。

 #!/bin/bash
 PID=`ps -ef | grep "<program name>" | grep -v "grep" | tr -s ' ' | cut -f 2 -d ' '  | head -n 1`
 renice -10 ${PID}

PID行は次の順序でこれを行います。

  1. プロセスのリストを取得します。
  2. を検索します。
  3. とgrepの両方を持つ行を削除します。
  4. 連続するスペースを単一のスペースに置き換えます。
  5. スペースを区切り文字として使用して、2番目の列の値を取得します。
  6. 最初の行を取ります。

これがあなたが始めるのに役立つことを願っています!

3
Ray

Ubuntu Backupa.k.a.DejaDupは、バックエンドとしてduplicityを使用します。これを引き起こす原因となった2014年に重複した bug が修正されました。それでもまだ発生するため、重複する別のバグを報告できます。このバグは1つの物理コアにのみ影響するため、コンピューターはマルチCPUマシンでも応答するはずです。それ以外の場合は、他のさまざまなバックアップの選択肢を検討するか、使用していないときにコンピューターをバックアップしてください。

より大きなブロックサイズを試すこともできますか?

duplicity --max-blocksize 4096 [full/incremental] src dest

   --max-blocksize number
          determines the number of the blocks examined for changes during the diff process.  For files < 1MB
          the blocksize is a constant of 512.  For files over 1MB the size is given by:

          file_blocksize = int((file_len / (2000 * 512)) * 512)
          return min(file_blocksize, globals.max_blocksize)

          where globals.max_blocksize defaults to 2048.  If you specify a larger max_blocksize, your difftar
          files will be larger, but your sigtar files will be smaller.  If you specify a smaller max_blocksize,
          the reverse occurs.  The --max-blocksize option should be in multiples of 512.
1
Jonathan