web-dev-qa-db-ja.com

オンザフライでddバックアップを圧縮する

多分これはばかげた質問のように聞こえるかもしれませんが、私がそれをやろうとしている方法はうまくいきません。

Livecdを使用している、ドライブがマウント解除されている、など。

このようにバックアップすると

Sudo dd if=/dev/sda2 of=/media/disk/sda2-backup-10august09.ext3 bs=64k

...通常は機能しますが、コピー先の外部HDに十分なスペースがありません(ALMOSTが収まります)。だから私はこの方法で圧縮したかった

 Sudo dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz

...しかし、権限が拒否されました。わかりません。

25
Phil

Sda2-backup ... gzファイルにアクセスできますか? Sudoはその後のコマンドでのみ機能し、リダイレクトには適用されません。リダイレクトに適用する場合は、シェルをルートとして実行して、すべての子プロセスもルートになるようにします。

Sudo bash -c "dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz"

または、uid/gidマウントオプション(ext3を想定)を使用してディスクをマウントし、自分がどのユーザーであっても書き込み権限を付与することもできます。または、rootを使用して、アクセス権のある/ media/diskにフォルダーを作成します。

その他の役立つ情報:

  • ブロックサイズは、ほとんどの場合、速度にのみ重要です。デフォルトは512バイトで、MBRおよびフロッピーディスク用に保持します。ポイントのサイズを大きくすると、操作が高速化されます。これは、バッファに似ていると考えてください。 リンクはこちら 異なるブロックサイズでいくつかの速度ベンチマークを行った人へ。ただし、パフォーマンスは多くの要因に影響されるため、独自のテストを行う必要があります。アンドレアスによる他の答えも見てください
  • Sshとnetcatを使用してネットワーク経由でこれを実現したいので、スペースがそれほど大きな問題にならない場合は、 このサーバー障害の質問 を参照してください。
  • 本当にパーティションのイメージが必要ですか?より良いバックアップ戦略があるかもしれませんか?
  • ddはvery非常に危険なコマンドです。ofの代わりにifを使用すると、上書きすることになりますバックアップしようとしています!!キーoiが互いに隣接していることに注意してください。 非常に非常に非常に注意してください
41
Kyle Brandt

最初のケースでは、ddはrootとして実行されています。

2番目のケースでは、ddはrootとして実行されていますが、gzipはユーザーとして実行されています。

/ media/diskの権限を変更するか、自分にルートシェルを与えるか、ルートとしてgzipを実行します。

6
chris

さらに、gzipをbzip2 --bestに置き換えると、圧縮率が大幅に向上します。

Sudo dd if=/dev/sda2 | bzip2 --best > /media/disk/$(date +%Y%m%d_%H%M%S)_sda2-backup.bz2
3
dmityugov