複数ファイルのアーカイブをダウンロードさせる時の方法

例えば、複数個の画像ファイルをまとめてダウンロードさせたりする場合、サーバ上でテンポラリディレクトリに画像ファイルをコピーして、それらをアーカイブしてダウンロードさせたりします。 しかし、これだと画像ファイルをいちいちコピーすることになるので、ストレージを圧迫する可能性があるし、ファイル数が多いとコピーに時間がかかります。

そこで、シンボリックリンクを作成し、そのディレクトリ毎アーカイブすることにします。

まず、テンポラリディレクトリを作成します。

テンポラリディレクトリまでのパスと、テンポラリディレクトリ名を分けている理由は後述。

次に、作成したテンポラリディレクトリに、画像ファイルのシンボリックリンクを作成します。

あとは、このテンポラリディレクトリごとアーカイブします。特に画像ファイルの場合、圧縮してもサイズは余り変わらないので、tar でアーカイブすれば、圧縮処理が無い分、処理が早いです。 tarコマンドのオプションで「h」をつけることで、シンボリックリンクを実体としてアーカイブできます。これがキモですね。

この時、tarコマンドのオプションで「-C」をつける。これで、指定したディレクトリに移動してから処理します。 こうすることで、テンポラリディレクトリのフルパスでアーカイブされずに済みます。

あとは、このファイルをダウンロードさせてばOK。

おすすめ記事