<?php $target = 'target.txt'; $newtarget = 'new_target'.date("YmdHi").'.txt'; if( ! copy($target, $newtarget) ) { echo "コピーできませんでした。\n"; } ?>
PHPでZIP圧縮する方法で簡単な手段は、system() でシェルコマンドを実行させる方法です。
/home/user1/file1.txt /home/user1/file2.txt
/usr/backup/
yyyymmdd.zip
<?php $d = date("Ymd"); $backup_file = "/usr/backup/" . $d . ".zip"; system("cd /home/user1/;zip -r $backup_file *"); ?>
<?php // set_time_limit(60); // 圧縮するファイルが多くて60秒でタイムアウトする場合は時間を伸ばしてください $backup_dir = "./example"; // バックアップするディレクトリを指定 $new_file = "example.zip"; // zipファイルのファイル名を指定 system("zip -r $new_file $backup_dir > /dev/null"); // zipファイルを生成。ログを出力しない。 //ファイルをダウンロード header('Content-Disposition: attachment; filename="'.basename($new_file).'"'); header('Content-Type: application/octet-stream'); header('Content-Transfer-Encoding: binary'); header('Content-Length: '.filesize($new_file)); readfile($new_file); @unlink($new_file); //ファイルをダウンロード後サーバから削除 ?>
オプション | 説明 |
-f | 変更されたファイルを最新のものにする。 |
-u | 更新されたファイルや新しいファイルのみを追加する。 |
-d | 不要なものを削除する。 |
-m | 指定した圧縮ファイルを移動、削除する。 |
-r | ファイルとディレクトリを再帰的に処理する。 |
-j | ファイルパスを記録せず、ディレクトリを除く。 |
-0 | 指定したものを保存する。 |
-l | 改行コードをLFからCR+LFに変更する。(-llでCR+LFからLFに変更 する。) |
-# | #の部分に数値を指定して、圧縮速度を指定する。(デフォルト:6) |
-1:高速圧縮する。(処理速度が最大になるが圧縮率が犠牲になる) | |
-9:高圧縮する。(処理速度が犠牲になるが圧縮率が最大になる) | |
-q | クイック圧縮を行う |
-v | 内容を逐一表示させる。 |
-c | 一行コメントを入力する |
-z | 複数行コメントを入力する。 |
-@ | ファイル名を標準入力から読み込む。 |
-o | 圧縮ファイルの変更時刻を最新のものと同じにする。 |
-x | 特定のファイルを除く。 |
-i | 特定のファイルだけを格納する。 |
-F | 破損している圧縮ファイルを修正を試みる。(-FFでより試みる) |
-D | ディレクトリは格納しない。 |
-A | 自己解凍形式で圧縮する。 |
-J | 圧縮ファイルから格納データ以外の情報を除く |
-T | ファイルの整合性をテストをする |
-X | ファイルの属性を保管しない |
-y | 参照ファイルの代わりにシンボリックリンクを格納する。 |
-R | カレント・ディレクトリにあるファイルとディレクトリを再帰的に処 理する |
-e | 暗号化して格納する。 |
-n | 指定した拡張子のファイルを圧縮しない。 |
-a | ファイルをアスキーモードに変換する。 |
-A | 実行可能なアーカイブを抽出して適合させる。 |
-B | ファイルを2進法で読み出す。(初期設定はテキスト) |
-Bn | nで定義される状態でEdit/Enscribeの形式を設定する。 |
-d | 圧縮ファイル内から指定したものを削除する。 |
-df | アーカイブに圧縮されたファイルのデータフォークを格納する |
-E | ファイル名としてLONGNAME Extended Attribute (ある場合)を使う |
-g | 新しいアーカイブを作らずに指定した既存のところへ追加する。 |
-h | ヘルプ情報を表示する。 |
-I | イメージファイルをスキャンしない |
-j | パスを除いてファイル名のみを格納する。ディレクトリ名は保存し ない。 |
-jj | Fullpath(+ Volname)を記録する。 |
-J | アーカイブからSFXスタブなど以前のデータを取り除く |
-k | ファイル名とパス名をMS-DOS(8.3)フォーマットに変更し、MS- DOSで有効なファイル属性のみを格納する |
-L | zipのライセンスを表示する。 |
-N | 圧縮ファイルのコメントとして、AmigaまたはMacOSのfilenoteを保存する。 |
-Qn | nで定義されるファイルヘッダーにあるファイルに関する情報を保存する |
-S | システムを追加して、ファイルを隠す。 |
-V | VMS属性ファイルを格納する |
-w | ファイルのバージョン番号をファイルの複数のバージョンを含む名前に追加する。 |
-! | WinNTセキュリティを取り入れるために特権モードを使用する。 |
-$ | 圧縮ファイルを保持しているドライブにボリュームラベルを含める。 |