はじめに
今時、ssh接続ができないことなんてそうそうないはずなんですが、全くないわけではありません。
私はそんな時、基本的にftpクライアントソフトを利用して、ファイル操作を行っています。
しかし、ftp接続でファイル数のおおいディレクトリを削除しようとすると、非常に時間がかかってしまいます。
加えて、圧縮したり、解凍したりするのも少し不便です。
方法
(OSは、macOS、ftpクライアントソフトは、Cyber duckを利用しています。)
容量の大きなファイルを削除しても、すぐに消せることから、1ファイルごとに削除命令を出していることが、削除に時間がかかる要因だと思われます。
ftp側で早く削除するためにできることはなさそうなので、PHP(実行環境があり、コマンドが実行できるならどんな言語でもできるはず)でlinuxコマンドを実行して、削除することにしました。
<?php
system('rm -rf 対象ディレクトリのpath');
圧縮・解凍について
ftpではファイルの圧縮、解凍も少し手間がかかります。(ftp単体だと出来ない様子)
圧縮
<?php
system('tar -zcvf backup.tar.gz target_ directory');
解凍
<?php
system('tar -zxvf backup.tar.gz');
余談
macでtarボールを作る場合、通常、【._.hogehoge】というような余計な隠しファイルが作成されてしまいます。
以下のようにCOPYFILE_DISABLE=1を利用すると、これを回避できます。
COPYFILE_DISABLE=1 tar -zcvf test.tar.gz test