Daily Server 유지 관리에서 원격 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 = '/백업/';
$ excling_file = 'backup_'. 날짜 ( 'ymd'). '.지퍼';
// 연결을 만듭니다
$ conn = ftp_connect ($ ftp_host);
if (! $ conn) {
종료 ( "FTP 서버에 연결할 수 없음 \ n");
}
// 로그인
if (! ftp_login ($ conn, $ ftp_user, $ ftp_pass)) {
ftp_close ($ conn);
종료 ( "FTP 로그인 실패 \ n");
}
// 디렉토리 스위치
if (! ftp_chdir ($ conn, $ ftp_dir)) {
ftp_close ($ conn);
종료 ( "대상 디렉토리를 입력 할 수 없음 \ n");
}
// 파일 목록을 가져옵니다
$ raw_list = ftp_rawlist ($ conn, ".");
$ found = false;
foreach ($ raw_list as $ line) {
$ parts = preg_split ( "/\ s+/", $ line);
$ filename = end ($ parts);
if ($ filename === $ excling_file) {
$ found = true;
부서지다;
}
}
ftp_close ($ conn);
// 결과를 출력하거나 알림을 보냅니다
if ($ 발견) {
echo "file $ excent_file이 존재합니다 \ n";
} 또 다른 {
// Mail 또는 Webhook 알림은 여기에서 통합 될 수 있습니다
echo "경고 : 파일 $ excent_file을 찾을 수 없음 \ n";
// file_get_contents ( " https://gitbox.net/notify?msg=BackUp_Missing&file=$expected_file ");
}
</코드>
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 소스를 지원하기위한 함수로 캡슐화 할 수 있습니다.
예외 처리 : 레트리 메커니즘과 자세한 오류 로그 추가;
보안 : 스크립트에서 비밀번호 저장을 피하고 .env 파일 또는 시스템 변수를 사용하는 것을 고려하십시오.
CRON 타이밍 작업과 결합 된 PHP의 FTP_Rawlist 기능을 통해 FTP 백업 파일의 자동 감지 메커니즘을 효율적으로 구현할 수 있습니다. 이 솔루션은 가볍고 유연하며 중소형 프로젝트를 빠르게 배포하는 데 적합합니다. 백업 신뢰성이 높은 시스템의 경우 이러한 자동 감지 방법은 필수 불가능한 보장입니다.