phpのsystemコマンドでtar圧縮・解凍

phpのsystemコマンドでtar圧縮・解凍

2021.05.13 一部加筆訂正しました。

SSH使えない環境で
FTP接続でバックアップ取ったりするとき。
大きいファイルだと時間かかるので
phpのsystem()でtarコマンドを使って圧縮・解凍すると
速くなって便利です。

●パーミッション保持したまま圧縮
system( "tar cvzfp 圧縮したファイル名.tar.gz 圧縮したいディレクトリ名" , $ret );
echo $ret;

例)
system( "tar cvzfp test.tar.gz test" , $ret );
echo $ret;

●パーミッション保持したまま解凍
system( "tar xvzfp 解凍したいファイル名.tar.gz");

例)
system( "tar xvzfp test.tar.gz");

●補足
・$retには戻り値が入る。
・解凍するときも、 ,$ret をつけると戻り値が取れる。
・戻り値の値
 0:成功
 1:圧縮開始後、対象ファイルが変更された
 2:失敗
 参考サイト:tarコマンドの戻り値 – ITエンジニアの技術メモ

●SSHで圧縮解凍する場合
# パーミッション保持したまま圧縮
tar cvzfp xxxxx.tar.gz ディレクトリ名

# パーミッション保持したまま解凍
tar xvzfp xxxxx.tar.gz