2011-08-15 3 views
4

私は、tarコマンドを使用して膨大な量のデータをバックアップするLinuxソフトウェアソリューションを使用しています。 タールがある呼び出しをバイナリにハードコードされたコマンド:ハードコードされたtarコマンドのパラメータを入力

/bin/tar --exclude "/backup" --exclude/--ignore-failed-read -cvjf - /pbackup 2>>'/tar_err.log' | split -b 1000m - '/backup/temp/backup.tar.bz2' 

それがharcodedされると、コマンドを変更する機会がありません。 bzip2を使用してデータを圧縮します。すべてのCPUコアを利用するパラメータ--use-compress-prog = pbzip2を使用すると、私は強いパフォーマンスの向上(最大60%)を経験しました。 bzip2を/ bin/bzip2からpbzip2バイナリにシンボリックリンクすると、私はソフトウェアを騙そうとしましたが、プロセスを監視するときにはまだtarに組み込まれているのでbzip2を使います。

私はそれは難しい質問です知っているが、外部と呼ばれ、このコマンドを変更することなく、pbzip2を利用する方法はありますか?

私のシステムはDebian Sequeezeです。

ありがとうございました!

+1

あなたは追加のパラメータを注入して "本当の" 'tar'にタスクを転送する"偽の "' '/ bin /' 'tar'スクリプトを入れて、全体を' 'chrootすることができます。利益に値するものではありません。 –

答えて

1

危険:先に醜いソリューション。それはあなたが言った文字列が表示されている場合(おそらくそれは/bin/tar例えば、いくつかの部分になりますあなたのバイナリにstringsを使用して、次を参照してください。バックアップは、すべての

ファーストを進める前に、バイナリは、ハードコードされた文字列が容易にアクセスできるかどうかを確認します、--exclude--ignore-failed-read、...)。これが成功した場合

、バイナリを開き、ハードコードされた文字列を探し、選択のあなたのバイナリエディタをつかみます。分割されている場合は、/bin/tarを含むものが必要です。 tarを任意の3文字の名前で上書きします。 fktfa ke t ar; /usr/bin/fktの検索結果が表示されないので、安全である必要があります)。

プログラムは、通常のtarするのではなく、あなたの/usr/bin/fktを呼び出す必要があります。今

、このようなあなたの/binスクリプトに入れる:

#!/bin/sh 
/bin/tar --use-compress-prog=pbzip2 $* 

は、あなたが(fkt)の前に選択した名前でそれを呼び出し、(彼らは755可能とrootが所有している必要があります)、正しくアクセス権を設定します。このスクリプトは、取得するすべてのパラメータを取り、実際のtarを呼び出し、必要なパラメータを追加します。私はコメントで提案していること


別の解決策は、今、明らかに(あなたがすべき(?多分、realtar)他のいくつかの名前にtarの名前を変更し、ちょうどアプリケーションのchrootを作成し、tar上記のスクリプトを呼び出すこともできますスクリプト内の/bin/tar/bin/realtarに変更します)。プログラムは非常に頻繁に更新されていないとトリックが設定とchrootsを維持し、私はおそらく最初のソリューションとなるだろう最初の試みで働いていた場合

は楽しみではありません。

+0

非常にスマートなソリューション、ありがとう。私はあなたの指示に従って、--ignore-failed-read文字列を見つけ、pbzip2文字列を追加して、このアクションがファイルサイズを変更し、無視して結果を実行しようと警告しました。これは本当に良い試行ですので、バイナリの作業をやり直すにはどうしたらいいですか? – durox

+0

バイナリの途中に文字を挿入すると機能しなくなるため、*/*/*/***のみを***に上書きするよう明示的に言いました。データセグメントですが、コード内のオフセットを固定していません)。バックアップを作成した場合は最初に復元し、そうでなければ16進エディタでバイナリの前の状態を復元してください。 –

+0

とにかく、 '/ bin/tar'文字列は見つかりませんでしたか?あるいは、より単純に、 'tar'だけでもいいですか? (文字列で表示するには、最小文字列の長さを3に変更する必要があります) –

0

なぜ移動/ binに/タール(例えば)/ binに/タール元

次に、あなたはそれがやりたいものは何でもするスクリプト/ binに/タールを作成します。

+0

これは、マシン上の他のものに 'tar'を使用する予定がない場合にのみ実行可能な解決策です。また、 'tar'パッケージのすべてのアップデートがあなたのスクリプトを上書きします(あるいは、悪いことに、いくつかの奇妙な' dpkg'エラーで失敗するでしょう)。 –

+0

はい私はそれについても考えましたが、マッテオが言ったように、それは私のシステム上の他のほとんどのものと互換性がなくなります。とにかくありがとうございます。 – durox

関連する問題