HOME > ニュース

/aptmp/(ユーザ名)/ のファイル・ディレクトリの整理のお願い

(最終更新日: 2019年10月2日)

現状の確認

/aptmp/(ユーザ名) を使用しているユーザは、/aptmp/info/(ユーザ名) に以下の値が記載されています。

  • ディスク使用量
  • ファイルサイズ分布
  • ファイルコピー予測時間

計算サーバにログインし、まずはこれらの値をご確認下さい(10月1日頃計測)。 なお、この値は動的に変わるものではなく、計測時点での値です。

以下、ユーザ名: user の場合の確認例を示します。

% ssh fe1.scl.kyoto-u.ac.jp -l user  ← 計算サーバfe1にログイン
% cat /aptmp/info/user        ←  ディスクの使用量等の確認


#========================================================
# size of /aptmp/user/
#========================================================

$ du -hs /aptmp/user/
621G	/aptmp/user                  ←  ディスク使用量:621GB

#========================================================
# distribution of file sizes in /aptmp/user/
#========================================================
                                     ↓ ファイルサイズ分布
$ /usr/bin/time -p hist_filesize /aptmp/user/
  1k:  37837
  2k:  74500
  4k:  74491
  8k:  11540
 16k:  27693
 32k:  43606
 64k:  34979
128k:  17078
256k:   6581
512k:  67333
  1M:    671
  2M:    216
  4M:    104
  8M:    133
 16M:    168
 32M:    253
 64M:   1243
128M:    803
256M:    121
512M:     40
  1G:     32
  2G:      4
  4G:      2
  8G:      1
 16G:      1
128G:      1
real 610.59
user 12.50
sys 61.19

#========================================================
# estimated file copy time
#========================================================

 size:       num   time [s]
---------------------------
   1k:     37837        252
   2k:     74500        440
   4k:     74491        572
   8k:     11540         85
  16k:     27693        233
  32k:     43606        428
  64k:     34979        452
 128k:     17078        311
 256k:      6581        164
 512k:     67333      2,075
   1M:       671         23
   2M:       216         10
   4M:       104          7
   8M:       133         15
  16M:       168         32
  32M:       253         84
  64M:      1243        675
 128M:       803        733
 256M:       121        188
 512M:        40        115
   1G:        32        184
   2G:         4         46
   4G:         2         46
   8G:         1         46
  16G:         1         92
 128G:         1        738
---------------------------
total copy time:      8,057 [s]   ← ファイルコピー予測時間:8,057秒
average copy rate:       91 [MiB/s]

このケースでは比較的ディスク使用量が少なく、ファイルコピー予測時間も短いため、不要なファイル・ディレクトリの削除で構いません。
しかし、ディスク使用量が1TBを越える、あるいはファイルコピー予測時間(total copy time) が24時間(86,400秒)を越える場合は、 以下のファイル・ディレクトリの圧縮にご協力頂くようお願い致します。

ファイル・ディレクトリの整理

  • まずは不要なファイル・ディレクトリの削除をお願い致します。
  • 当面御利用の予定がないサイズが大きいファイルは gzip コマンドで圧縮して頂くようお願い致します。
    • 複数コアを使用して高速にgzip圧縮を行う pigz コマンドを御利用下さい
  • 当面御利用の予定がない多数のファイルを含むディレクトリは tar.gz 形式で圧縮して頂くようお願い致します。
    • サイズが数kb〜数10kb以下の小さいファイルはrsyncコマンドのコピー速度が著しく低下しますので、小さいファイルが大量に存在するディレクトリは当面御利用の予定がなければ tar.gz 形式で圧縮して頂くようお願い致します
    • 複数コアを使用して高速にディレクトリの tar.gz 圧縮を行う targz コマンドを御利用下さい


ファイルの整理を行うコマンド

  • 注: 以下のコマンドはいずれもファイル数が多いと時間がかかります。

ディレクトリのディスク使用量を表示

$ du -hs (ディレクトリ)
  • 例1: /aptmp/xxx/ の全ディスク使用量を表示
    $ du -hs /aptmp/xxx/
    
  • 例2: * で複数のディレクトリを指定することもできます
    $ du -hs /aptmp/xxx/*
    

ディレクトリ内のファイルのサイズ分布を表示

$ hist_filesize (ディレクトリ)

ファイルコピー時間の見積

rsyncコマンドでファイルをコピーする時間を見積もります。
hist_filesize コマンドの結果を copytime コマンドに与えて下さい。

$ hist_filesize (ディレクトリ) > hist_filesize.out
$ copytime hist_filesize.out
もしくは
$ hist_filesize (ディレクトリ) | copytime

条件を指定してファイルを検索

  • サイズが1GiB以上のファイルを出力。ファイルサイズも表示。
    $ find (ディレクトリ)/ -type f -size +1G -exec ls -lh {} \;
  • サイズが100MiB以上の .fasta ファイルを出力。ファイルサイズも表示。
    $ find (ディレクトリ)/ -type f -size +100M -name "*.fasta" -exec ls -lh {} \;
  • サイズが1GiB以上で .sra, .bam, .gz 形式でないファイルを出力。ファイルサイズも表示。
    $ find (ディレクトリ)/ -type f -size +1G ! -name "*.sra" ! -name "*.bam" ! -name "*.gz" -exec ls -lh {} \;
  • サイズが 2kb (2000バイト) 以下のファイルを出力。
    $ find (ディレクトリ)/ -type f -size -2000c
  • サイズが1GiB以上、かつ、更新日時が365日以上古いファイルを出力。ファイルサイズも表示。
    $ find (ディレクトリ)/ -type f -size +1G -mtime +365 -exec ls -lh {} \;

pigzコマンドを使用して高速にファイルを圧縮

$ pigz -p (使用コア数) (ファイル)
  • pigz は 複数コアを使用して高速にgzip圧縮を行うコマンドです
  • pigz で圧縮したファイルは通常の gunzip コマンドで展開できます。
  • バイオインフォマティクスで使用される.sra, .bam ファイルはgzip圧縮がほとんど効かないのでgzip圧縮をしないで下さい。
  • 例1: 指定したディレクトリ下にある .fastq ファイルを圧縮するスクリプト
    #!/bin/sh
    #PBS -q JP10
    #PBS -l select=1:ncpus=10:mem=32gb
    
    find (ディレクトリ) -type f -name "*.fastq" -print -exec pigz -p 10 {} \;
    
  • 例2: 指定したディレクトリ下にある .fastq ファイルを圧縮するスクリプト(圧縮前後のファイルサイズも表示)
    #!/bin/sh
    #PBS -q JP10
    #PBS -l select=1:ncpus=10:mem=32gb
    
    find (ディレクトリ) -type f -name "*.fastq" -exec ls -lh {} \; -exec pigz -p 10 {} \; -exec ls -lh {}.gz \;
    

ディレクトリを tar.gz 形式で圧縮

$ targz -p (使用コア数) (ディレクトリ)
$ targz -p (使用コア数) --rm (ディレクトリ)  # --rm オプションを付けると圧縮後に(ディレクトリ)を削除します
  • targz コマンドはディレクトリを tar コマンドで固めてpigz コマンドで高速にgzip圧縮を行います。
  • 「targz -p 20 --rm /a/b/c/」 を実行した場合の挙動は以下の通りです。
    cd /a/b/                              # c/ディレクトリがあるディレクトリに移動
    tar cvf - c/ | pigz -p 20 > c.tar.gz  # c/ディレクトリを圧縮
    tar atf c.tar.gz                      # c.tar.gz が壊れていないかチェック
    /bin/rm -rf c/                        # c/ディレクトリ を削除
    
    (注) 直接 tar cvf - /a/b/c/ するのではなく、/a/b/ に移動してから c/ を圧縮します。最終的に生成されるファイルは /a/b/c.tar.gz となります。
  • 例1: ディレクトリを圧縮後に削除するスクリプト
    #!/bin/sh
    #PBS -q JP10
    #PBS -l select=1:ncpus=10:mem=32gb
    
    targz -p 10 --rm (ディレクトリ)
    

変更履歴

日付 内容
2019/08/16 /aptmp/info/(ユーザ名) を更新
2019/08/19 targzコマンドの説明を追加
2019/09/03 /aptmp/info/(ユーザ名) を更新
「ファイル・ディレクトリの整理」を更新
2019/09/18 /aptmp/info/(ユーザ名) を更新
2019/10/02 /aptmp/info/(ユーザ名) を更新