通知设置 新通知
typora markdown文章 快速清除文章内的所有超链接
闲聊 • 李魔佛 发表了文章 • 0 个评论 • 3584 次浏览 • 2022-04-27 12:11
如何快速地清除这些超链接呢?
很简单,只要你把要删除的超链接区域选中,如果全文的话,ctrl+A ,
然后按下快捷键 Ctrl + \
就可以快速清除样式,所有的超链接就会不见了的。
查看全部
如何快速地清除这些超链接呢?
很简单,只要你把要删除的超链接区域选中,如果全文的话,ctrl+A ,
然后按下快捷键 Ctrl + \
就可以快速清除样式,所有的超链接就会不见了的。
wordpress安装了jetpack插件速度慢得一批
网络 • 李魔佛 发表了文章 • 0 个评论 • 1465 次浏览 • 2022-04-26 09:17
果断卸载了。
查看全部
果断卸载了。
docker wordpress无法上传图片到uploads目录
网络 • 李魔佛 发表了文章 • 0 个评论 • 1448 次浏览 • 2022-04-25 12:38
无法将上传的文件移动至wp-content/uploads/
uploads文件夹权限不够。
这个时候需要进入到docker里面,赋予一定的写权限。
网上看到很多人直接来一个命令:
chmod -R 777 uploads/
这种玩意对方上传一个可执行文件到uploads,后面利用漏洞执行这个路径。 那么你的站点可能就落入到其他人手上了。
所以只要保证设置非这个用户组的用户只给与读写的权限,不给与执行x的权限
7 7 6 , 所以正确的写法是:
chmod -R 776 uploads/
后面再上传一次文件,就成功了。
查看全部
无法将上传的文件移动至wp-content/uploads/
uploads文件夹权限不够。
这个时候需要进入到docker里面,赋予一定的写权限。
网上看到很多人直接来一个命令:
chmod -R 777 uploads/
这种玩意对方上传一个可执行文件到uploads,后面利用漏洞执行这个路径。 那么你的站点可能就落入到其他人手上了。
所以只要保证设置非这个用户组的用户只给与读写的权限,不给与执行x的权限
7 7 6 , 所以正确的写法是:
chmod -R 776 uploads/
后面再上传一次文件,就成功了。
七牛云的图片图床配置到腾讯云域名解析
Linux • 李魔佛 发表了文章 • 0 个评论 • 1105 次浏览 • 2022-04-24 16:24
https://developer.qiniu.com/fusion/kb/1322/how-to-configure-cname-domain-name
一般按照上面链接创建就可以了。
这里有个值要注意的,主机记录
描述如下:
主机记录 填写加速域名对应的主机前缀 该参数唯一,请勿自定义
这里你的主机记录是你的二级域名的部分,
比如你的二级域名是 img.30daydo.com
那么这里你的主机记录就是 img
查看全部
https://developer.qiniu.com/fusion/kb/1322/how-to-configure-cname-domain-name
一般按照上面链接创建就可以了。
这里有个值要注意的,主机记录
描述如下:
主机记录 填写加速域名对应的主机前缀 该参数唯一,请勿自定义
这里你的主机记录是你的二级域名的部分,
比如你的二级域名是 img.30daydo.com
那么这里你的主机记录就是 img
讯投QMT python API文档
股票 • 李魔佛 发表了文章 • 0 个评论 • 2388 次浏览 • 2022-04-23 01:35
需要的可以到公众号后台留言获取: qmt接口文档
需要开通qmt可以联系微信: (目前交易费率万一免五)
docker nginx+php部署的wordpress,安装插件不需要ftp账号
Linux • 李魔佛 发表了文章 • 0 个评论 • 1404 次浏览 • 2022-04-22 23:43
配置好之后,如果需要安装第三方的应用,每次需要FTP账号,用于远程下载这个插件文件到wordpress的plugin目录下。
不过为了这个插件功能再开个ftp服务,还暴露了端口,有点鸡肋。
于是按照网上的教程倒腾,不过网上的教程都没有使用docker操作,按照他们的操作是没能把问题解决的。
主要是用户名不一样。
1. 进入nginx的容器中,注意是nginx,而不是php
docker exec -it xxxx /bin/bash
2. 修改nginx的 wordpress的根目录所有者权限
注意这里的用户名是 www-data , 而不是www
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
不要乱信网上的人说,要改为777, 除非你想把你的服务器送给别人做肉鸡。
然后刷新一下页面,就可以直接安装,而跳过那个ftp密码, 查看全部
配置好之后,如果需要安装第三方的应用,每次需要FTP账号,用于远程下载这个插件文件到wordpress的plugin目录下。
不过为了这个插件功能再开个ftp服务,还暴露了端口,有点鸡肋。
于是按照网上的教程倒腾,不过网上的教程都没有使用docker操作,按照他们的操作是没能把问题解决的。
主要是用户名不一样。
1. 进入nginx的容器中,注意是nginx,而不是php
docker exec -it xxxx /bin/bash
2. 修改nginx的 wordpress的根目录所有者权限
注意这里的用户名是 www-data , 而不是www
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
不要乱信网上的人说,要改为777, 除非你想把你的服务器送给别人做肉鸡。
然后刷新一下页面,就可以直接安装,而跳过那个ftp密码,
docker php fpm里面有个Kdevtmpfsi挖矿病毒
Linux • 李魔佛 发表了文章 • 0 个评论 • 1695 次浏览 • 2022-04-20 00:51
一个欲思主题,一个大学主题。狗日了。
查看本地的连接。
netstat -atnlp
居然有2个ssh的连接,一个IP是美国的。一个是我自己的。
而且重启后这玩意还是自动被重连。
感觉被做了反向连接。
最后定位到的问题是,php的9000端口暴露了。导致被对方使用漏洞程序扫描,注入了病毒。
查看全部
一个欲思主题,一个大学主题。狗日了。
查看本地的连接。
netstat -atnlp
居然有2个ssh的连接,一个IP是美国的。一个是我自己的。
而且重启后这玩意还是自动被重连。
感觉被做了反向连接。
最后定位到的问题是,php的9000端口暴露了。导致被对方使用漏洞程序扫描,注入了病毒。
1核2G的服务器 docker跑wordpress真够吃力
Linux • 李魔佛 发表了文章 • 0 个评论 • 1176 次浏览 • 2022-04-19 23:04
现在的wordpress加的内容可真多
现在的wordpress加的内容可真多
python3 安装demjson 报错 use_2to3 is invalid
python • 李魔佛 发表了文章 • 0 个评论 • 4857 次浏览 • 2022-04-18 20:19
Collecting demjson==2.2.4
Downloading https://pypi.doubanio.com/pack ... ar.gz (131 kB)
|████████████████████████████████| 131 kB 985 kB/s
ERROR: Command errored out with exit status 1:
command: /root/miniconda3/envs/py37/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-7ve4tu87
cwd: /tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/
Complete output (3 lines):
/root/miniconda3/envs/py37/lib/python3.7/site-packages/setuptools/dist.py:760: UserWarning: Usage of dash-separated 'index-url' will not be supported in future versions. Please use the underscore name 'index_url' instead
% (opt, underscore_opt)
error in demjson setup command: use_2to3 is invalid.
记录一下解决办法:
setuptools 降级:
pip install --upgrade setuptools==57.5.0
然后再pip install demjson 即可
如果担心setuptools 修改到系统的其他库,可以创建一个虚拟环境。
然后在虚拟环境里面对setuptools 降级,再安装demjson
来个养眼图: 查看全部
ooking in indexes: https://pypi.douban.com/simple
Collecting demjson==2.2.4
Downloading https://pypi.doubanio.com/pack ... ar.gz (131 kB)
|████████████████████████████████| 131 kB 985 kB/s
ERROR: Command errored out with exit status 1:
command: /root/miniconda3/envs/py37/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-7ve4tu87
cwd: /tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/
Complete output (3 lines):
/root/miniconda3/envs/py37/lib/python3.7/site-packages/setuptools/dist.py:760: UserWarning: Usage of dash-separated 'index-url' will not be supported in future versions. Please use the underscore name 'index_url' instead
% (opt, underscore_opt)
error in demjson setup command: use_2to3 is invalid.
记录一下解决办法:
setuptools 降级:
pip install --upgrade setuptools==57.5.0
然后再pip install demjson 即可
如果担心setuptools 修改到系统的其他库,可以创建一个虚拟环境。
然后在虚拟环境里面对setuptools 降级,再安装demjson
来个养眼图:
股票证券资金账户开户选个吉祥号-靓号888,999
券商万一免五 • 绫波丽 发表了文章 • 0 个评论 • 2365 次浏览 • 2022-04-18 16:19
一般情况下,股民开户的股东账号都是中登公司随机产生的,不可以选择。有机会选择的是资金账号哦
那哪些数字比较受欢迎呢,当然是689啦
“6”代表六六大顺,
“8”谐音“发”,即发财。
“9”意味长长久久。
还有,其实7比8更受宠?
因为七上八下。股指都希望永远向上,不要下啊
最近 国金证券 推出了些许靓号,开头888的,需要开户的朋友请扫码联系,备注:国金开户 查看全部
一些个人博客wordpress的内容需要用户扫码关注才可以阅读
闲聊 • 低调的哥哥 发表了文章 • 0 个评论 • 1123 次浏览 • 2022-04-17 14:36
这种体验差的一批。
是什么迷之自信让这些作者对自己写的内容如此敝帚自珍?
看到这样的站点,1s都不想停留,直接关闭了。
这种体验差的一批。
是什么迷之自信让这些作者对自己写的内容如此敝帚自珍?
看到这样的站点,1s都不想停留,直接关闭了。
centos/ubuntu linux 下 python matplotlib 绘图中文标题乱码 解决
Linux • 李魔佛 发表了文章 • 0 个评论 • 1948 次浏览 • 2022-04-15 22:23
测试代码:import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import rcParams
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['simhei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False
plt.title(r'宋体 Times New Roman')
plt.axis('off')
plt.savefig('usestix.png')
每次换机器都遇到这个问题,所以记录下来,以免日后又在折腾
首先找到一个ttf格式的中文字体,windows系统的可以在C盘的system里面找找。
我用的是微软雅黑。msyh.ttf , 需要的可以到公众号里面取。 后台回复: msyh.ttf 即可
或者simhei.ttfcd /usr/share/fonts/
sudo mkdir chinese
sudo cp simhei.ttf /usr/share/fonts/chinese/
sudo chmod -R 755 /usr/share/fonts/chinese
更新缓存mkfontscale
mkfontdir
fc-cache
注意,如果你的系统没有上述命令,需要使用yum install mkfontscale mkfontdir c-cache安装
然后接下来这一步,很重要。
清理缓存,不然不会生效!!!!rm -rf ~/.cache/matplotlib
matplotlib:
同时把这个msyh.ttf的文件复制到matplotlib库下的文件夹:
~python3.9/site-packages/matplotlib/mpl-data/fonts/ttf/
下面
然后运行程序,搞定~
公众号:可转债量化分析
后台回复 : msyh.ttf 或者 simhei.ttf 即可获取字体文件。 查看全部
测试代码:
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import rcParams
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['simhei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False
plt.title(r'宋体 Times New Roman')
plt.axis('off')
plt.savefig('usestix.png')
每次换机器都遇到这个问题,所以记录下来,以免日后又在折腾
首先找到一个ttf格式的中文字体,windows系统的可以在C盘的system里面找找。
我用的是微软雅黑。msyh.ttf , 需要的可以到公众号里面取。 后台回复: msyh.ttf 即可
或者simhei.ttf
cd /usr/share/fonts/
sudo mkdir chinese
sudo cp simhei.ttf /usr/share/fonts/chinese/
sudo chmod -R 755 /usr/share/fonts/chinese
更新缓存
mkfontscale
mkfontdir
fc-cache
注意,如果你的系统没有上述命令,需要使用yum install mkfontscale mkfontdir c-cache安装
然后接下来这一步,很重要。
清理缓存,不然不会生效!!!!
rm -rf ~/.cache/matplotlib
matplotlib:
同时把这个msyh.ttf的文件复制到matplotlib库下的文件夹:
~python3.9/site-packages/matplotlib/mpl-data/fonts/ttf/
下面
然后运行程序,搞定~
公众号:可转债量化分析
后台回复 : msyh.ttf 或者 simhei.ttf 即可获取字体文件。
积分大于200才能够发帖
闲聊 • 低调的哥哥 发表了文章 • 0 个评论 • 1423 次浏览 • 2022-04-15 01:18
目前可以允许积分大于200分的用户发言。
注册给10积分,更新个人资料送200积分。
所以只要更新一下个人资料即可处于发言状态。
东方证券万一免五开户,已取消流量费,放心使用
券商万一免五 • 绫波丽 发表了文章 • 0 个评论 • 3770 次浏览 • 2022-04-14 14:18
而原来的费率也不变,股票万一免五,最低0.1元起。(是的,万一免五,没有流量费,没有流量费)
PS:
一般流量费是在高频交易里面才会有,主要因为频繁挂单,扯单造成的费率影响。
开完户后,需要入金1w后,当天即可调免五,第二天可交易。到时会有电话通知调佣成功的。届时注意电话。
有问题可以咨询微信:
查看全部
国金证券如何开通科创板及开通条件是什么
量化交易 • 绫波丽 发表了文章 • 0 个评论 • 1846 次浏览 • 2022-04-13 18:53
首先,科创板开通条件主要检查是否满足以下两个硬性要求
1,资金要求
开通之前的20个交易日以上,证券账户及资金账户内的资产日平均不少于50万人民币
2,交易时间要求
该账户证券交易24个月(两年)以上
其次,若满足以上两个要求,即可开通国金证券科创板,步骤如下:
1.登录国金证券账户
2.点击“我的”
3.点击“业务办理“
4.选择点击科创板权限设置"
5.点击”开通科创板“
恰逢目前国金有万一的活动,需要开户的朋友,请扫码联系,备注:国金开户 查看全部
银河证券如何开通科创板及开通条件是什么
量化交易 • 绫波丽 发表了文章 • 0 个评论 • 2526 次浏览 • 2022-04-13 17:53
首先,科创板开通条件是什么?
重点来了: 开通条件主要检查是否满足以下两个硬性要求
1,资金要求
开通之前的20个交易日以上,证券账户及资金账户内的资产日平均不少于50万人民币
2,交易时间要求
该账户证券交易24个月(两年)以上
其次,若满足以上两个要求,即可开通银河证券科创板,步骤如下:
登录银河证券账户点击“我的”点击“业务办理“选择点击科创板权限设置"点击”开通科创板“
恰逢目前银河有万一免五的活动,需要开户的朋友,请扫码联系,备注:银河开户
查看全部
中国银河证券股份有限公司(以下简称“公司”)是经国务院批准,在收购原中国银河证券有限责任公司的证券经纪业务、投行业务及相关资产的基础上,由中国银河金融控股有限责任公司作为主发起人,联合北京清源德丰创业投资有限公司、重庆水务集团股份有限公司、中国通用技术(集团)控股有限责任公司、中国建材股份有限公司4家国内投资者,于2007年1月26日共同发起设立的全国性综合类证券公司
首先,科创板开通条件是什么?
重点来了: 开通条件主要检查是否满足以下两个硬性要求
1,资金要求
开通之前的20个交易日以上,证券账户及资金账户内的资产日平均不少于50万人民币
2,交易时间要求
该账户证券交易24个月(两年)以上
其次,若满足以上两个要求,即可开通银河证券科创板,步骤如下:
- 登录银河证券账户
- 点击“我的”
- 点击“业务办理“
- 选择点击科创板权限设置"
- 点击”开通科创板“
恰逢目前银河有万一免五的活动,需要开户的朋友,请扫码联系,备注:银河开户
券商交割单是什么时候才能出来的?
股票 • 绫波丽 发表了文章 • 0 个评论 • 3734 次浏览 • 2022-04-12 16:32
其实真实的费率是在交割单里面。交割单一般是当天网上中登网交割后,才会出来。
交割单制度就是优化了资金流转效率。
比如你当天买卖,买了1000元股票,又卖出了1100元股票,净差额是100元,所以最后中登 只需要转入100元给券商,其余部分的券商内部流转,并没有真实的发生资金流转。
需要万一免五开户的朋友可以扫码开通: 查看全部
腾讯云轻服务器 太垃圾了,大家别买
Linux • 李魔佛 发表了文章 • 0 个评论 • 2461 次浏览 • 2022-04-11 23:31
#### 2022-05-17更新 ########
而且续费还贼贵,3年到期就跑路啦,不续费。888
#############
先跑一个conda install 命令,只是为了装一个第三方库。
然后在等待的时候,去再开一个shell窗口操作。
结果就另外一个shell就卡住了。
这个现象已经经历过N次验证,轻服务器千万不要用来跑多任务,用来部署一个wordpress就差不多了。
只要2个轻微的程序一跑起来,系统就hang掉了。
这样的垃圾,续费还要1400一年。
查看全部
第一创业证券开户,支持量化聚宽,QMT
券商万一免五 • 绫波丽 发表了文章 • 0 个评论 • 2524 次浏览 • 2022-04-10 19:44
第一创业证券开户,费率如下
股票:万2.5
场内基金申购1折
可转债:沪市:万0.1 深市:万0.5
支持量化聚宽,QMT
需要开户的老铁,请扫码联系,备注:第一创业开户 查看全部
哪个券商打涨停板VIP条件单交易通道速度快 ,支持独立交易单元,最适合打板
券商万一免五 • 绫波丽 发表了文章 • 0 个评论 • 3457 次浏览 • 2022-04-10 19:36
其实每个证券券商都有优缺点,一般来说,大的券商,交易软件,系统投资建设等技术或许较为成熟一些,
小的券商相对来说软件功能可能没那么丰富,但也不存在绝对慢的说法。
另外,如果是高净值,资金量比较丰厚,可以申请vip交易通道。
例如开通支持通达信VIP交易通道或者多种条件单交易,但相对做短线的投资手法,也需要选择一些券商可以保持交易通道的稳定性和速度
目前比较受欢迎运用量化交易策略技术,如Ptade和qmt,获取闪电技术下单的功能。
加上拥有一个低费率且有VIP通道交易的券商,那真的是锦上添花
需要开通低佣万一免五或开通量化交易的朋友,请扫码联系,备注:开户 查看全部
其实每个证券券商都有优缺点,一般来说,大的券商,交易软件,系统投资建设等技术或许较为成熟一些,
小的券商相对来说软件功能可能没那么丰富,但也不存在绝对慢的说法。
另外,如果是高净值,资金量比较丰厚,可以申请vip交易通道。
例如开通支持通达信VIP交易通道或者多种条件单交易,但相对做短线的投资手法,也需要选择一些券商可以保持交易通道的稳定性和速度
目前比较受欢迎运用量化交易策略技术,如Ptade和qmt,获取闪电技术下单的功能。
加上拥有一个低费率且有VIP通道交易的券商,那真的是锦上添花
需要开通低佣万一免五或开通量化交易的朋友,请扫码联系,备注:开户
ubuntu安装微信PC版
Linux • 李魔佛 发表了文章 • 0 个评论 • 2382 次浏览 • 2022-04-10 17:13
使用一行命令就可以安装:curl -sL https://gitee.com/mirrors/doch ... at.sh | bash
前提你已经安装了docker
上面的命令不能用sudo安装,
如果所docker需要sudo启动,可以设置一下用户:sudo usermod -aG docker $USER
如果遇到错误:
mkdir: 无法创建目录 “/home/user/.wine/drive_c/users/user/Application Data/Tencent”: 权限不够
需要把用户目录下的DoWechat 文件夹给一个777的权限。
sudo chmod +R 777 DoWechat
然后重新运行
curl -sL https://gitee.com/mirrors/doch ... at.sh | bash
就可以扫描登陆PC版微信了。
其底层用的就是Wine。 类似与ubuntu下的windows模拟框架。
查看全部
使用一行命令就可以安装:
curl -sL https://gitee.com/mirrors/doch ... at.sh | bash
前提你已经安装了docker
上面的命令不能用sudo安装,
如果所docker需要sudo启动,可以设置一下用户:
sudo usermod -aG docker $USER
如果遇到错误:
mkdir: 无法创建目录 “/home/user/.wine/drive_c/users/user/Application Data/Tencent”: 权限不够
需要把用户目录下的DoWechat 文件夹给一个777的权限。
sudo chmod +R 777 DoWechat
然后重新运行
curl -sL https://gitee.com/mirrors/doch ... at.sh | bash
就可以扫描登陆PC版微信了。
其底层用的就是Wine。 类似与ubuntu下的windows模拟框架。
Docker sed: cannot rename /etc/sedyGSbui: Device or resource busy
Linux • 李魔佛 发表了文章 • 0 个评论 • 2814 次浏览 • 2022-04-10 14:19
比如挂载命令如下:
docker run -p 80:80 --name mynginx --privileged=true -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /data/nginx/logs:/var/log/nginx -d nginx:1.21
如果有文件存在,可以改为挂载其父母录
比如这里:
/data/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
把它改成
/data/nginx/conf.d:/etc/nginx/conf.d
即可解决这个问题。
查看全部
比如挂载命令如下:
docker run -p 80:80 --name mynginx --privileged=true -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /data/nginx/logs:/var/log/nginx -d nginx:1.21
如果有文件存在,可以改为挂载其父母录
比如这里:
/data/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
把它改成
/data/nginx/conf.d:/etc/nginx/conf.d
即可解决这个问题。
cronsun 数据备份与恢复
数据库 • 李魔佛 发表了文章 • 0 个评论 • 1209 次浏览 • 2022-04-09 18:10
cronsun提供的csctl工具可以备份和恢复cronsun的任务数据。
备份数据:
# 请将 --conf 修改为你自己保存的 base.json 文件的路径
# --file 为备份文件路径,会自动加上 .zip 后缀,这里不需要写后缀
csctl backup --conf={/path/to/base.json} --dir=./ --file=cronsun_data
恢复数据# 请将 --conf 修改为你自己保存的 base.json 文件的路径
# --file 为备份文件路径
csctl restore --conf={/path/to/base.json} --file=./cronsun_data.zip
把数据导入之后,还需要在新的机器上,web登录,把运行的节点逐个改为新节点。 这个有点不智能,不过,相比每一个都要手动更新全部内容,也很好很多,节省很多时间了。 查看全部
cronsun提供的csctl工具可以备份和恢复cronsun的任务数据。
备份数据:
# 请将 --conf 修改为你自己保存的 base.json 文件的路径
# --file 为备份文件路径,会自动加上 .zip 后缀,这里不需要写后缀
csctl backup --conf={/path/to/base.json} --dir=./ --file=cronsun_data
恢复数据
# 请将 --conf 修改为你自己保存的 base.json 文件的路径
# --file 为备份文件路径
csctl restore --conf={/path/to/base.json} --file=./cronsun_data.zip
把数据导入之后,还需要在新的机器上,web登录,把运行的节点逐个改为新节点。 这个有点不智能,不过,相比每一个都要手动更新全部内容,也很好很多,节省很多时间了。
etcd连接带用户名与密码
数据库 • 李魔佛 发表了文章 • 0 个评论 • 3783 次浏览 • 2022-04-09 00:57
ENDPOINT = http://127.0.0.1:2379
./etcdctl --endpoints=$ENDPOINT put foo "Hello World" --user="root" --password="password"
这样就把foo的值设为 "Hello World"
同理,如果要读取foo的值,只需要
ENDPOINT = http://127.0.0.1:2379
./etcdctl --endpoints=$ENDPOINT get foo --user="root" --password="password"
就可以把你上一个设置的值读取出来。
查看全部
ENDPOINT = http://127.0.0.1:2379
./etcdctl --endpoints=$ENDPOINT put foo "Hello World" --user="root" --password="password"
这样就把foo的值设为 "Hello World"
同理,如果要读取foo的值,只需要
ENDPOINT = http://127.0.0.1:2379
./etcdctl --endpoints=$ENDPOINT get foo --user="root" --password="password"
就可以把你上一个设置的值读取出来。
mongodb python同步两个数据库数据
python • 李魔佛 发表了文章 • 0 个评论 • 1662 次浏览 • 2022-04-07 02:44
所以自己动手写代码完成:
# -*- coding: utf-8 -*-
# @Time : 2022/4/6 4:41
# @File : database_migrate.py
# @Author : Rocky C@www.30daydo.com
import time
from loguru import logger
import pymongo
ignore_db = ['admin', 'config', 'local',
] # 忽略更新的库
ignore_col = [('db_stock','dfcf_list_full')]
logger.add('mongo.log')
# 数据库同步
def get_client(user, password, host, port):
connect_uri = f'mongodb://{user}:{password}@{host}:{port}'
client = pymongo.MongoClient(connect_uri)
return client
def origin():
return get_client('admin', 'password', '127.0.0.1', '27017')
def target():
return get_client('root', 'password', '127.0.0.1', '27017')
def transfer():
origin_client = origin()
target_client = target()
dbs = get_db_name(origin_client)
for db in dbs:
for col in get_collection_name(origin_client, db):
if (db,col) in ignore_col:
continue
items = []
logger.info(f'正在更新{db} {col}')
for i in get_item(origin_client, db, col):
items.append(i)
insert_item(target_client, db, col, items)
logger.info(f'更新数据库 {db} {col}')
# time.sleep(0.5)
def get_item(client, db_name, col):
return client[db_name][col].find()
def insert_item(client, db_name, col, data):
batch = 1000
count = len(data)//batch + 1
for i in range(count):
item = data[i*batch:(i+1)*batch]
if len(item)==0:
continue
try:
client[db_name][col].insert_many(item)
except Exception as e:
logger.error(e)
logger.error(f'{db_name} {col} 插入出错')
def get_db_name(client):
db_name = client.list_database_names()
dbs = []
for db in db_name:
if db not in ignore_db:
dbs.append(db)
return dbs
def delete_col(client,db,col):
try:
client[db][col].delete_many({})
except Exception as e:
logger.error(e)
logger.error(db)
logger.error(col)
return False
else:
return True
def server_compare():
'''
比较2个数据库是否相同,只是单纯比较条数
'''
origin_client = origin()
target_client = target()
dbs = get_db_name(origin_client)
for db in dbs:
for col in get_collection_name(origin_client, db):
origin_count = origin_client[db][col].count_documents({})
target_count = target_client[db][col].count_documents({})
if origin_count!=target_count:
logger.info(f'collection {db} {col}有区别')
#
if delete_col(target_client,db,col):
items = []
logger.info(f'正在更新{db} {col}')
for i in get_item(origin_client, db, col):
items.append(i)
insert_item(target_client, db, col, items)
logger.info(f'更新数据库 {db} {col}')
time.sleep(1)
def get_collection_name(client, db_name):
collection_names = client[db_name].list_collection_names(session=None)
return collection_names
def main():
server_compare()
if __name__ == '__main__':
main()
原理就是不断迭代,不同的数据库,里面的不同的collection。
对于同名collection,通过条数是否一致,来决定是否要把原数据复制过来。
保存上面文件为main.py
执行 python main.py
就可以进行数据同步工作啦。 查看全部
所以自己动手写代码完成:
# -*- coding: utf-8 -*-
# @Time : 2022/4/6 4:41
# @File : database_migrate.py
# @Author : Rocky C@www.30daydo.com
import time
from loguru import logger
import pymongo
ignore_db = ['admin', 'config', 'local',
] # 忽略更新的库
ignore_col = [('db_stock','dfcf_list_full')]
logger.add('mongo.log')
# 数据库同步
def get_client(user, password, host, port):
connect_uri = f'mongodb://{user}:{password}@{host}:{port}'
client = pymongo.MongoClient(connect_uri)
return client
def origin():
return get_client('admin', 'password', '127.0.0.1', '27017')
def target():
return get_client('root', 'password', '127.0.0.1', '27017')
def transfer():
origin_client = origin()
target_client = target()
dbs = get_db_name(origin_client)
for db in dbs:
for col in get_collection_name(origin_client, db):
if (db,col) in ignore_col:
continue
items = []
logger.info(f'正在更新{db} {col}')
for i in get_item(origin_client, db, col):
items.append(i)
insert_item(target_client, db, col, items)
logger.info(f'更新数据库 {db} {col}')
# time.sleep(0.5)
def get_item(client, db_name, col):
return client[db_name][col].find()
def insert_item(client, db_name, col, data):
batch = 1000
count = len(data)//batch + 1
for i in range(count):
item = data[i*batch:(i+1)*batch]
if len(item)==0:
continue
try:
client[db_name][col].insert_many(item)
except Exception as e:
logger.error(e)
logger.error(f'{db_name} {col} 插入出错')
def get_db_name(client):
db_name = client.list_database_names()
dbs = []
for db in db_name:
if db not in ignore_db:
dbs.append(db)
return dbs
def delete_col(client,db,col):
try:
client[db][col].delete_many({})
except Exception as e:
logger.error(e)
logger.error(db)
logger.error(col)
return False
else:
return True
def server_compare():
'''
比较2个数据库是否相同,只是单纯比较条数
'''
origin_client = origin()
target_client = target()
dbs = get_db_name(origin_client)
for db in dbs:
for col in get_collection_name(origin_client, db):
origin_count = origin_client[db][col].count_documents({})
target_count = target_client[db][col].count_documents({})
if origin_count!=target_count:
logger.info(f'collection {db} {col}有区别')
#
if delete_col(target_client,db,col):
items = []
logger.info(f'正在更新{db} {col}')
for i in get_item(origin_client, db, col):
items.append(i)
insert_item(target_client, db, col, items)
logger.info(f'更新数据库 {db} {col}')
time.sleep(1)
def get_collection_name(client, db_name):
collection_names = client[db_name].list_collection_names(session=None)
return collection_names
def main():
server_compare()
if __name__ == '__main__':
main()
原理就是不断迭代,不同的数据库,里面的不同的collection。
对于同名collection,通过条数是否一致,来决定是否要把原数据复制过来。
保存上面文件为main.py
执行 python main.py
就可以进行数据同步工作啦。
原来便宜的腾讯云轻服务器续费要这么贵的。。。。
网络 • 李魔佛 发表了文章 • 0 个评论 • 1429 次浏览 • 2022-04-06 00:46
之前买的几台用来做数据库, 3年,费用才200不到,是现在续费一年的费用的零头不到。。。。
果然用户要先圈起来,再慢慢宰。
PS: 并不是买不起贵的服务器,之前部署的集群费用都1w多的,只是觉得企鹅这种圈地的做法,不得人心。
那个轻服务器,并不见得值1千多一年。 同时开2个mongodb,备份数据,已经被中断进程N次。无奈下,直接注销这个服务器。垃圾的一批
查看全部
之前买的几台用来做数据库, 3年,费用才200不到,是现在续费一年的费用的零头不到。。。。
果然用户要先圈起来,再慢慢宰。
PS: 并不是买不起贵的服务器,之前部署的集群费用都1w多的,只是觉得企鹅这种圈地的做法,不得人心。
那个轻服务器,并不见得值1千多一年。 同时开2个mongodb,备份数据,已经被中断进程N次。无奈下,直接注销这个服务器。垃圾的一批
腾讯云不同账户下内网互通是可以的,只是要收费。。
网络 • 李魔佛 发表了文章 • 0 个评论 • 2277 次浏览 • 2022-04-05 23:45
前提条件
需要互联的私有网络 VPC 已创建。
需要互联的各 VPC 子网网段、IDC 网段没有冲突。
步骤一:账号 A 创建云联网实例
使用账号 A 登录 云联网控制台 ,在云联网管理页面,单击+新建。
在弹出框中填写云联网实例名称、描述,选择计费模式、服务质量、限速方式和关联实例的 VPC ID。
貌似也不便宜的样子。
算了,能用本机的数据库就用本机吧,大不了走公网,用个跳板机的,提高安全性。 查看全部
前提条件
需要互联的私有网络 VPC 已创建。
需要互联的各 VPC 子网网段、IDC 网段没有冲突。
步骤一:账号 A 创建云联网实例
使用账号 A 登录 云联网控制台 ,在云联网管理页面,单击+新建。
在弹出框中填写云联网实例名称、描述,选择计费模式、服务质量、限速方式和关联实例的 VPC ID。
貌似也不便宜的样子。
算了,能用本机的数据库就用本机吧,大不了走公网,用个跳板机的,提高安全性。