毎日のサーバーメンテナンスでは、リモートFTPサーバーへの定期的なバックアップが一般的な操作です。ただし、コマンドのアップロードのみに依存しても、バックアップファイルが存在するか、正常にアップロードされることを保証しません。したがって、PHPのFTP_RAWLIST関数とシステム計画タスク(CRON)メカニズムを組み合わせて、FTP上のバックアップファイルの自動検出を実現できます。
この記事では、PHPコードを使用してFTPディレクトリファイルをリストし、Cronを組み合わせて検出タスクを定期的に実行し、ファイルが欠落または異常な場合にリマインダーを迅速に送信する方法を紹介します。
コードの作成を開始する前に、次のポイントが次のことを確認してください。
アクセス可能なFTPサーバーがあります。
PHP環境は、FTP_*一連の関数をサポートしています( FTP拡張機能を有効にする必要があります)。
LinuxでCronタイミングタスクを構成する機能。
通知(電子メール、WebHook、DingTalkなど)を受信できます。
以下は、FTPにバックアップファイルが存在するかどうかを検出するPHPスクリプトです。
<code>&lt;?php // ftp構成
$ ftp_host = 'ftp.gitbox.net';
$ ftp_user = 'ftp_user';
$ ftp_pass = 'ftp_password';
$ ftp_dir = '/backups/';
$ spedd_file = 'backup_'。日付( 'ymd')。 '。ジップ';
//接続を作成します
$ conn = ftp_connect($ ftp_host);
if(!$ conn){
exit( "FTP Server \ n"に接続できません ");
}
// ログイン
if(!ftp_login($ conn、$ ftp_user、$ ftp_pass)){
ftp_close($ conn);
exit( "ftpログインFailed \ n");
}
//ディレクトリを切り替えます
if(!ftp_chdir($ conn、$ ftp_dir)){
ftp_close($ conn);
exit( "ターゲットディレクトリを入力できません\ n");
}
//ファイルリストを取得します
$ raw_list = ftp_rawlist($ conn、 "。");
$ fund = false;
foreach($ raw_list as $ line){
$ parts = preg_split( "/\ s+/"、$ line);
$ filename = end($ parts);
if($ filename === $ equide_file){
$ fund = true;
壊す;
}
}
ftp_close($ conn);
//結果の出力または通知を送信します
if($ found){
echo "file $ expect_file存在\ n";
} それ以外 {
//メールまたはwebhook通知はここに統合できます
echo "警告:File $ expect_fileが見つかりません\ n";
// file_get_contents( " https://gitbox.net/notify?msg = backup_missing&file= $ expected_file");
}
</code>
ftp_rawlist()は、unix ls -lと同様のファイル情報リストを返し、ファイル名は手動で解決する必要があります。
日付( 'ymd')は、その日のバックアップファイル名を動的に生成するために使用されます。
https://gitbox.net/notifyなどのWeb APIを呼び出すなど、 Else Branchのカスタムアラームシステムにアクセスできます。
毎日午前3時にバックアップファイルを自動的に検出したいとします。次のコマンドを使用してCRONタスクを追加します。
crontab -e
その後、追加:
0 3 * * * /usr/bin/php /path/to/backup_checker.php >> /var/log/backup_check.log 2>&1
/path/to/backup_checker.phpスクリプトパスが正しく、実行権限があることを確認してください。
ロギング:簡単に追跡できるように、ログファイルに検出結果を書き込みます。
マルチFTPサポート:複数のFTPソースをサポートする機能としてカプセル化できます。
例外処理:追加メカニズムと詳細なエラーログを追加します。
セキュリティ:スクリプトでパスワードのプレーンテキストの保存を避け、 .ENVファイルまたはシステム変数を使用することを検討してください。
PHPのFTP_RAWLIST関数とCronタイミングタスクを組み合わせて、FTPバックアップファイルの自動検出メカニズムを効率的に実装できます。このソリューションは軽量で柔軟で、中小規模のプロジェクトの迅速な展開に適しています。バックアップの信頼性要件が高いシステムの場合、このような自動検出方法は不可欠な保証です。