6

ファイルを解凍しようとしています。untar する前に、マウントされたボリュームで利用可能な空き容量を知りたいです。十分なスペースがない場合は展開しない予定です。では、Perl を使用して、マウントされたボリュームで使用可能な空き容量を見つけるにはどうすればよいでしょうか? ちなみに、tar と untar は Perl を使っています。

df誰もがandについて言ってdhいますが、これらのコマンドはマウント ポイントでは機能しません。マウントされたポイントに書き込むことができる空き領域を見つけたい場合はどうすればよいですか?

4

4 に答える 4

13

おそらく CPAN モジュールFilesys::DfPortableが必要です。

于 2009-02-11T09:55:40.210 に答える
3

シェル コマンドを使用して、Perl が使用できる単一の K フリー数を生成します。

untar するディレクトリに移動し (まだそこにない場合)、次のコマンドを実行します。

df . | grep -v '^Filesystem' | awk 'NF=6{print $4}NF==5{print $3}{}'

または「。」を置き換えます。実際のマウントポイントで。

grep はヘッダーを取り除き、awk は分割行と非分割行の両方で使用可能なキロバイトを出力します。

これは、次の種類の出力に基づいています。UNIX の出力が異なる場合は、調整が必要になる場合があります。

ファイルシステム 1,000 ブロック使用済み 使用可能使用率 % マウント済み
/dev/sda4 206434224 56965356 139065176 30% /
varrun 1037296 132 1037164 1% /var/run
varlock 1037296 0 1037296 0% /var/ロック
udev 1037296 68 1037228 1% /dev
devshm 1037296 12 1037284 1% /dev/shm
/dev/sda2 93327 43535 44973 50% /ブート
/dev/sdc1 155056484 29417456 117824612 20% /media/extra160
gvfs-fuse-daemon
              206434224 56965356 139065176 30% /home/pax/.gvfs
于 2009-02-13T11:26:37.837 に答える
2

組み込みの Linux コマンドを使用して結果を取得できます。

my $vol = "/dev/volume";
my $freespace = `df $vol | grep '$vol' | awk '{print \$4}'`;
# free space in megabytes.
$freespace = sprintf("%01.2f", $freespace / 1024);
于 2009-02-11T10:00:54.693 に答える