နေ့စဉ်လည်ပတ်မှုနှင့်ပြုပြင်ထိန်းသိမ်းမှုသို့မဟုတ် 0 ဘ်ဆိုဒ်စီမံခန့်ခွဲမှုများတွင်ကျွန်ုပ်တို့သည်လိုအပ်မှုကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည် - FTP ဆာဗာပေါ်ရှိလမ်းညွှန်ဖိုင်ကိုထည့်သွင်းခြင်း, ၎င်းကို Synchronization Tools (သို့) အဆင့်မြင့်စောင့်ကြည့်လေ့လာရေးစနစ်များကိုအသုံးပြုပြီးအကောင်အထည်ဖော်နိုင်သော်လည်း PHP မှပေးသော ftp_Rawlist function ကိုအကောင်အထည်ဖော်ရန်အတွက် PHP မှပေးသော ftp_Rawlist ဖြစ်သည်။
FTP_RAWLIST သည် PHP မှပေးသော FTP စစ်ဆင်ရေးလုပ်ဆောင်ချက်များအနက်မှတစ်ခုဖြစ်သည်။ FTP_NLIST နှင့်နှိုင်းယှဉ်လျှင် File အမည်များကိုသာပြန်ပို့ပေးသည့် FTP_RAWLIST နှင့်နှိုင်းယှဉ်လျှင် FTP_RAWLIST သည် UNIX LS -l command ၏ရလဒ်နှင့်ဆင်တူသည်။
FTP_RAWList ရလဒ်များကိုအချိန်တိုအတွင်းဖမ်းယူနိုင်သည့်အရာသည် "Directory Snapshot" နှင့်နှိုင်းယှဉ်နိုင်သည်။
FTP server ကိုချိတ်ဆက်ပြီးဝင်ပါ
ပစ်မှတ်လမ်းညွှန်ချက်စာရင်း (i.e. , Snapshot) ၏ဖိုင်စာရင်းကိုတွား
လျှပ်ကူးပစ္စည်းများကို local file သို့သိမ်းဆည်းပါ
နောက်ပြေးပေါ်တွင်စုဆောင်းပြီးနောက်ဆုံးလျှပ်တစ်ပြက်နှင့်နှိုင်းယှဉ်ပါ
output ပြောင်းလဲမှုများ (add, ဖျက်ရန်, ပြုပြင်မွမ်းမံခြင်း)
FTP snapshot ကိုမည်သို့ဖမ်းယူရန်နှင့်၎င်းကိုနောက်ဆုံးလျှပ်တစ်ပြက်နှင့်နှိုင်းယှဉ်ပုံကိုပြသသည့် PHP script ဥပမာတစ်ခုမှာဤတွင်ဖော်ပြထားသည်။
<code> `` `php <? php // ftp configuration ကို
$ ftp_host = "ftp.gitbox.net";
$ ftp_user = "FTP_USER";
$ ftp_pass = "ftp_password";
$ ftp_dir = "/ htdocs /";
$ snapshot_file = dir ။ '/last_snapshot.txt';
// ချိတ်ဆက်နှင့် log in ဝင်ပါ
$ can = ftp_connect ($ ftp_host);
(! $ conn) {
Die ("FTP server ကိုချိတ်ဆက်လို့မရဘူး"),
}
if (! FTP_Login ($ Cons, $ ftp_user, $ ftp_pass))
ftp_close ($ con);
သေဆုံး ("FTP login မအောင်မြင်");
}
// လက်ရှိလျှပ်တစ်ပြက်ရယူပါ
FTP_CHDIR ($ CON, FTP_DIR);
$ Rawlist = FTP_RAWLIST ($ CON, "။ ");
ftp_close ($ con);
// ဖွဲ့စည်းပုံ arrays သို့ parse snapshots
Parse_Rawlist function ကို ($ Rawlist) {
$ snapshot = [];
foreach ($ rawlist အဖြစ် $ လိုင်း) {
$ အစိတ်အပိုင်းများ = PREG_SPLPLIT ("/ \ s + /", $ line, 9);
IF (ရေတွက် ($ အစိတ်အပိုင်းများ) <9) ဆက်လက်;
$ name = $ အစိတ်အပိုင်းများ [8];
$ အချက်အလက် = [
'Perm' => $ အစိတ်အပိုင်းများ [0],
'size' => $ အစိတ်အပိုင်းများ [4],
'{$ အစိတ်အပိုင်းများ [5]} {$ အစိတ်အပိုင်းများ [6]} {$ အစိတ်အပိုင်းများ [7]}
];
$ snapshot [$ အမည်] = $ အချက်အလက်;
}
$ snapshot ကိုပြန်သွားပါ။
}
$ current_snapshot = Parse_Rawlist ($ Rawlist);
// နောက်ဆုံးလျှပ်တစ်ပြက် load
$ ယခင်က previous_snapshot = file_exists ($ snapshot_file)? unserialize (file_get_controtents ($ snapshot_file)): [];
// နှိုင်းယှဉ်လျှပ်ကူးပစ္စည်း
$ ထပ်တိုး = array_diff_key ($ current_snapshot, $ _Snapshot);
$ ဖျက်ထားသော = array_diff_key ($ arras_snapshot, $ current_snapshot);
$ ပြုပြင်မွမ်းမံ = [];
foreach ($ file file => $ info) အဖြစ် foreach ($ current_snapshot) {
if (ISSET ($ _Snapshot [$ file])))
IF ($ Info ['size']! == $ $ file_snapshot [$ file] ['size'] ||
$ Info ['date]! == $ file_snapshot [$ file] [' file]))
$ ပြုပြင်ထားသော [$ file] = $ အချက်အလက်,
}
}
}
// output ကိုပြောင်းလဲမှုရလဒ်များ
Echo "=== file change on ိုင်အစီရင်ခံစာ === \ n";
လျှင် ($ ထည့်သွင်း) {
ပဲ့တင်သံ "\ n [new file အသစ်]: \ n";
foreach ($ file => $ info အဖြစ်ထည့်သွင်း ($ ထည့်သွင်း) {
echo "+ $ file \ n";
}
}
လျှင် ($ ဖျက်ပစ်) {
ပဲ့တင်သံ "\ n [delete file]: \ n";
foreach ($ file => $ info အဖြစ်ဖျက်သည်)
echo "- $ file \ n";
}
}
လျှင် ($ ပြုပြင်မွမ်းမံ) {
ပဲ့တင်သံ "\ n [modify file]: \ n";
foreach ($ file => $ info အဖြစ် $ မပြုပြင်မွမ်းမံ)
echo "* $ file \ n";
}
}
// လက်ရှိလျှပ်တစ်ပြက်သိမ်းဆည်းပါ
File_Props_contents ($ snapshot_file, serialize ($ current_snapshot);
</code>
## လေး、လက်တွေ့ကျသောအကြံပြုချက်များ
1. **ကွပ်မျက် timed**:အသုံးပြုနိုင် `cron` သို့မဟုတ် Windows နာရီပေါင်းများစွာစီစဉ်ခြင်း/တစ်ရက်ကိုတစ်ကြိမ်ရိုက်ပါ,လျှပ်တစ်ပြက်များကိုပုံမှန်ထုတ်လုပ်ပါ。
2. **အသိပေးချက်ယန္တရား**:可以将变动信息သွား邮件သို့မဟုတ်Webhookအသိပေးချက်များပေးပို့ပါ,အန္တရာယ်များစစ်ဆင်ရေးကိုအချိန်မီဖြင့်အသိပေးပါ。
3. **စစ်နည်းဥပဒေစစ်စည်းမျဉ်းများ**:脚本中可加入白名单သို့မဟုတ်忽略规则,ဥပမာ skip `.log`、`.tmp` စာချုပ်စာတမ်း。
## ငါး、အကျဉ်းချုပ်
သွား `ftp_rawlist` မူရင်း directory ဖွဲ့စည်းပုံကိုရယူပါ,ဖွဲ့စည်းတည်ဆောက်ပုံ、Serialization နှင့်နှိုင်းယှဉ်,ကျနော်တို့အလွန်သေးငယ်တဲ့ကုန်ကျစရိတ်မှာအလားတူကုန်ကျစရိတ်အောင်မြင်ရန်နိုင်ပါတယ်“လမ်းညွှန်စောင့်ကြည့်ရေး”လုပ်ဆောင်ချက်များကို。ဤနည်းလမ်းသည်စီမံကိန်းအသေးစားများအတွက်အထူးသင့်တော်သည်、စနစ်ဟောင်း、သို့မဟုတ်仅需临时监控的场景。အရင်းအမြစ်များကိုသိမ်းပါ,ပြောင်းလွယ်ပြင်လွယ်နှင့်အကျိုးရှိစွာ,ဟုတ်ကဲ့PHPပေါ့ပါးတဲ့အလိုအလျောက်မှာလက်တွေ့ကျတဲ့အသုံးပြုမှု“အနက်ရောင်နည်းပညာ”。