We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
最近我在十年之约大群中,不少群友博客被刷评论,少则几百条多则上千条,应该是用了什么脚本,且都是typecho驱动
通过作者完善评论系统是肯定无法实现的,文件需要我们自己去备份
我第一次建站,毫无经验,所以从未考虑过备份评论,提供两种备份方案,写给和我一样的小白站长
宝塔可以直接对站点备份,但评论备份无法实现,服务器自带python环境,所以我做了一个python代码,利用crontab -e或宝塔面板中的计划任务定时备份,在目录下backuplog.txt会记录每一次备份日志
crontab -e
下载MongoDB工具,放到服务器里解压
Vercel部署,将代码存放在MongoDB 数据库工具同级路径下,按需修改30行(清理备份,delete_day)、35行(Vercel部署中的MONGODB_URI去掉问号之后的东西)
import os from datetime import datetime import sys class Logger ( object ): def __init__(self, fileN="Default.log"): self.terminal = sys.stdout self.log = open ( fileN, "a" ) def write(self, message): self.terminal.write ( message ) self.log.write ( message ) def flush(self): pass sys.stdout = Logger ( "backuplog.txt" ) # 输出日志 print ( "--------------------------------------------------------------\n" ) now_time = datetime.now () # 当前时间 now_time_day = now_time.day # 日 data = f"{now_time.year}年{now_time.month}月{now_time.day}日" delete_day = [ 15, 30 ] # 每月15、30号清空备份 if now_time_day in delete_day: os.system ( 'rm *.json -f' ) # 删除所有json print ( data + " 清空备份文件" ) # os.system ( 'rm backuplog.txt.txt -f' ) # 删除日志 MONGODB_URI = 'mongodb+srv://xxx:xxx@xxxxxxx/myFirstDatabase' commond = 'mongoexport --uri ' + f'{MONGODB_URI}' + ' --collection comment --forceTableScan --type json --out ' + f"{now_time.year}年{now_time.month}月{now_time.day}日.json" code = os.system ( commond ) if code == 0: print ( data + " 备份成功" ) else: print ( data + " 备份失败,请检查python文件中MONGODB_URI值是否正确" ) print ()
# Vercel部署日志文件示例 -------------------------------------------------------------- 2022年8月8日 备份失败,请检查python文件中MONGODB_URI值是否正确 -------------------------------------------------------------- 2022年8月8日 备份成功
私有部署,代码存放位置任意,修改30行(清理备份delete_day)、35行(原始路径init_path)、36行(备份路径backup_path),都用绝对路径,但不要与私有部署在相同路径下,因为定时清理会清掉所有json文件
import os from datetime import datetime import sys class Logger ( object ): def __init__(self, fileN="Default.log"): self.terminal = sys.stdout self.log = open ( fileN, "a" ) def write(self, message): self.terminal.write ( message ) self.log.write ( message ) def flush(self): pass sys.stdout = Logger ( "backuplog.txt" ) # 输出日志 print ( "--------------------------------------------------------------\n" ) now_time = datetime.now () # 当前时间 now_time_day = now_time.day # 日 data = f"{now_time.year}年{now_time.month}月{now_time.day}日" delete_day = [ 15, 30 ] # 每月15、30号清空备份 if now_time_day in delete_day: os.system ( 'rm *.json -f' ) # 删除所有json print ( data + " 清空备份文件" ) # os.system ( 'rm backuplog.txt.txt -f' ) # 删除日志 init_path='/xxxxx/bin/db.json.1' backup_path='/xxxxx/bin/backup/' init_path='"'+init_path+'"' backup_path='"'+backup_path+f"/{now_time.year}年{now_time.month}月{now_time.day}日.json"+'"' commond = 'cp '+init_path+" "+backup_path code = os.system ( commond ) if code == 0: print ( data + " 备份成功" ) else: print ( data + " 备份失败,请检查python文件中init_path和backup_path是否正确或备份路径是否有读写权限" ) print ()
# 私有部署日志文件示例 -------------------------------------------------------------- 2022年8月8日 备份成功 -------------------------------------------------------------- 2022年8月8日 备份失败,请检查python文件中init_path和backup_path是否正确或备份路径是否有读写权限
立即导出可以在shell窗口中运行python3 文件名,定时运行方法很多,crontab -e、宝塔计划任务、workflow...
shell
python3 文件名
此方法适合有服务器的人,以宝塔计划任务为例,定时Shell脚本示例,cd后跟py文件的绝对路径
cd /xxx/twikoo/mongodb/bin python3 backup.py
此方法适合无服务器的人,如果你会工作流,可以将Action中的文件作为一个私有仓库(py中有密码所以不要做公有),将修改好的MongoDB.py或Private.py放入仓库,修改backup.yml中30行为你的py文件名字,修改38、39、41行(如果你不会用git,可以不改,这项意义不大),之后该仓库会每天自动备份一次评论数据
MongoDB.py
Private.py
backup.yml
目录结构示例:
│ MongoDB.py │ mongoimport.exe │ └─.github └─workflows backup.yml
附我的仓库,Action文件夹仓库内自取,仓库里代码可以显示行数,方便一些
额外建议,因为我对JavaScript不熟悉,不知道技术上能否实现。通过第三方验证网站添加验证码(其实有点鸡肋,想刷的人还是会手动刷),或者像typecho前面那张图片一样,在后台审核中可以一键删除未审核的评论
The text was updated successfully, but these errors were encountered:
No branches or pull requests
问题背景
最近我在十年之约大群中,不少群友博客被刷评论,少则几百条多则上千条,应该是用了什么脚本,且都是typecho驱动
解决办法
通过作者完善评论系统是肯定无法实现的,文件需要我们自己去备份
我第一次建站,毫无经验,所以从未考虑过备份评论,提供两种备份方案,写给和我一样的小白站长
宝塔可以直接对站点备份,但评论备份无法实现,服务器自带python环境,所以我做了一个python代码,利用
crontab -e
或宝塔面板中的计划任务定时备份,在目录下backuplog.txt会记录每一次备份日志Vercel部署备份方案
下载MongoDB工具,放到服务器里解压
Vercel部署,将代码存放在MongoDB 数据库工具同级路径下,按需修改30行(清理备份,delete_day)、35行(Vercel部署中的MONGODB_URI去掉问号之后的东西)
私有部署备份方案
私有部署,代码存放位置任意,修改30行(清理备份delete_day)、35行(原始路径init_path)、36行(备份路径backup_path),都用绝对路径,但不要与私有部署在相同路径下,因为定时清理会清掉所有json文件
定时运行
立即导出可以在
shell
窗口中运行python3 文件名
,定时运行方法很多,crontab -e
、宝塔计划任务、workflow...宝塔计划任务
此方法适合有服务器的人,以宝塔计划任务为例,定时Shell脚本示例,cd后跟py文件的绝对路径
cd /xxx/twikoo/mongodb/bin python3 backup.py
workflow
此方法适合无服务器的人,如果你会工作流,可以将Action中的文件作为一个私有仓库(py中有密码所以不要做公有),将修改好的
MongoDB.py
或Private.py
放入仓库,修改backup.yml
中30行为你的py文件名字,修改38、39、41行(如果你不会用git,可以不改,这项意义不大),之后该仓库会每天自动备份一次评论数据目录结构示例:
附我的仓库,Action文件夹仓库内自取,仓库里代码可以显示行数,方便一些
额外建议
额外建议,因为我对JavaScript不熟悉,不知道技术上能否实现。通过第三方验证网站添加验证码(其实有点鸡肋,想刷的人还是会手动刷),或者像typecho前面那张图片一样,在后台审核中可以一键删除未审核的评论
The text was updated successfully, but these errors were encountered: