その場でddバックアップを圧縮する


23

たぶんこれは愚かな質問のように聞こえるかもしれませんが、私がそれをしようとしている方法は機能しません。

私は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

...しかし、許可が拒否されました。分かりません。


2
しないでください。これはバックアップではありません。「ダンプ」コマンドと「復元」コマンドを確認してください。
ジュリアーノ

またはtarまたはcpio
....-クリス

1
ジュリアーノ、「これはバックアップではない」とはどういう意味ですか?
フィル

5
バックアップは深刻で、適切に構成されており、バックアップを作成するための適切なツールを使用するため、これはバックアップではありません。パーティションの生データのコピーを作成しているだけです。このデータを復元するには、同じジオメトリの別のパーティションが必要になりますが、これは保証されていません。また、アーカイブの1つのブロック(スーパーブロック、iノードテーブル、ルートディレクトリなど)を損傷すると、すべてのデータが失われる危険があります。適切なバックアップでは、これは起こりません。
ジュリアーノ

7
「このデータを復元するには、同じジオメトリの別のパーティションが必要になりますが、これは保証されていません。」なぜ必要なのか、パーティションイメージをループバックデバイスにマウントできないのですか?
カイルブラント

回答:


41

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

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

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

あなたを助けるかもしれない他の情報:

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

これを試してみます。bs = 64kにする方法は?(私はする必要がありますか?)
フィル

bs = 64kは、ddがデフォルトのブロックサイズ(覚えていない)の代わりにそれぞれ64kのブロックを読み取るため、転送を高速化します。
クリス

クリスが言ったこと、そしてそれを含めたい場合は、ddの後の引数であるパイプ記号(|)の前に置きます。
カイルブラント

1
また、パイプラインで「sudo tee $ file> / dev / null」を使用して、ユーザーアカウントにもアクセスできないファイルへの書き込みを許可することもあります。
リックシュナイダー

6

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

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

/ media / diskのアクセス権を変更するか、ルートシェルを使用するか、rootとしてgzipを実行します。


3

さらに、gzipをbzip2 --bestより良い圧縮のために置き換えることができます:

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

3
多くの時間を費やします。詳細については、changelog.complete.org / archives /…「圧縮についての考え方」を参照してください。
ビルヴァイス

@BillWeiss:コメントありがとうございます、非常におもしろい読みです!
アンドレアス

圧縮:lzma> bzip2> gzip ..速度:gzip> bzip2> lzma。インターネット上でディスクイメージを公開している場合を除き、時間、CPU能力、およびより良い圧縮のために費やしているメモリにはあまりメリットがありません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.