<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://md5.pw/index.php?action=history&amp;feed=atom&amp;title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5</id>
	<title>使用搬瓦工api自动周期性创建快照并telegrambot通知 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://md5.pw/index.php?action=history&amp;feed=atom&amp;title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5"/>
	<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;action=history"/>
	<updated>2026-05-06T13:19:32Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1373&amp;oldid=prev</id>
		<title>EliToviyah：​修复一个分类误修改</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1373&amp;oldid=prev"/>
		<updated>2026-02-09T08:20:07Z</updated>

		<summary type="html">&lt;p&gt;修复一个分类误修改&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年2月9日 (一) 01:20的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l382&quot;&gt;第382行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第382行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== 查看日志 &amp;lt;code&amp;gt;cat /var/log/bwg_snapshot.log&amp;lt;/code&amp;gt; ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== 查看日志 &amp;lt;code&amp;gt;cat /var/log/bwg_snapshot.log&amp;lt;/code&amp;gt; ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Finalimg.png|border]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Finalimg.png|border]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;index.php?title=&lt;/del&gt;Category:500 常见应用指南 — Application Guides]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:500 常见应用指南 — Application Guides]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>EliToviyah</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1372&amp;oldid=prev</id>
		<title>EliToviyah：​修正演示使用的路径..增加一条提示</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1372&amp;oldid=prev"/>
		<updated>2026-02-09T08:15:48Z</updated>

		<summary type="html">&lt;p&gt;修正演示使用的路径..增加一条提示&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年2月9日 (一) 01:15的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l324&quot;&gt;第324行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第324行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;每周一的凌晨3:00运行 创建快照的指令&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;每周一的凌晨3:00运行 创建快照的指令&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;输入 timedatectl 查看系统使用的时区&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;第一个 Localtime 的时区就是 它所使用的时区 还请根据自己的时区自行修改时间 或修改系统使用的时区&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;可以按照自己的时间自行修改&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;可以按照自己的时间自行修改&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0 3 * * 1 root /&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;usr&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;local/bin/bwg_snap&lt;/del&gt;.sh -c &amp;gt;&amp;gt; /var/log/bwg_snapshot.log 2&amp;gt;&amp;amp;1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0 3 * * 1 root /&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;root&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;autosnapshot&lt;/ins&gt;.sh -c &amp;gt;&amp;gt; /var/log/bwg_snapshot.log 2&amp;gt;&amp;amp;1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l334&quot;&gt;第334行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第339行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;如果文件名 改了的话 这里也要修改 其他的地方不需要  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;如果文件名 改了的话 这里也要修改 其他的地方不需要  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;@reboot root /&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;usr&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;local/bin/bwg_snap&lt;/del&gt;.sh &amp;gt;&amp;gt; /var/log/bwg_snapshot.log 2&amp;gt;&amp;amp;1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;@reboot root /&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;root&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;autosnapshot&lt;/ins&gt;.sh &amp;gt;&amp;gt; /var/log/bwg_snapshot.log 2&amp;gt;&amp;amp;1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l376&quot;&gt;第376行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第382行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== 查看日志 &amp;lt;code&amp;gt;cat /var/log/bwg_snapshot.log&amp;lt;/code&amp;gt; ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== 查看日志 &amp;lt;code&amp;gt;cat /var/log/bwg_snapshot.log&amp;lt;/code&amp;gt; ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Finalimg.png|border]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Finalimg.png|border]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:500 常见应用指南 — Application Guides]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;index.php?title=&lt;/ins&gt;Category:500 常见应用指南 — Application Guides]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>EliToviyah</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1351&amp;oldid=prev</id>
		<title>2026年2月4日 (三) 19:00 Liam</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1351&amp;oldid=prev"/>
		<updated>2026-02-04T19:00:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年2月4日 (三) 12:00的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l376&quot;&gt;第376行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第376行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== 查看日志 &amp;lt;code&amp;gt;cat /var/log/bwg_snapshot.log&amp;lt;/code&amp;gt; ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== 查看日志 &amp;lt;code&amp;gt;cat /var/log/bwg_snapshot.log&amp;lt;/code&amp;gt; ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Finalimg.png|border]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Finalimg.png|border]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:500 常见应用指南 — Application Guides]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Liam</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1335&amp;oldid=prev</id>
		<title>EliToviyah：​修复一个错误的演示路径</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1335&amp;oldid=prev"/>
		<updated>2026-02-04T05:31:39Z</updated>

		<summary type="html">&lt;p&gt;修复一个错误的演示路径&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年2月3日 (二) 22:31的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l349&quot;&gt;第349行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第349行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;修改后 复制粘贴到ssh里面 回车就行了&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/cron.d/bwg_snap&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;修改后 复制粘贴到ssh里面 回车就行了&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/cron.d/bwg_snap&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 每周一凌晨 3 点创建快照&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 每周一凌晨 3 点创建快照&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0 3 * * 1 root /&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;usr&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;local/bin/bwg_snap&lt;/del&gt;.sh -c &amp;gt;&amp;gt; /var/log/bwg_snapshot.log 2&amp;gt;&amp;amp;1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;0 3 * * 1 root /&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;root&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;autosnapshot&lt;/ins&gt;.sh -c &amp;gt;&amp;gt; /var/log/bwg_snapshot.log 2&amp;gt;&amp;amp;1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 开机自启&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 开机自启&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;@reboot root /&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;usr&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;local/bin/bwg_snap&lt;/del&gt;.sh &amp;gt;&amp;gt; /var/log/bwg_snapshot.log 2&amp;gt;&amp;amp;1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;@reboot root /&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;root&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;autosnapshot&lt;/ins&gt;.sh &amp;gt;&amp;gt; /var/log/bwg_snapshot.log 2&amp;gt;&amp;amp;1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;EOF&amp;lt;/syntaxhighlight&amp;gt;# 修改文件权限  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;EOF&amp;lt;/syntaxhighlight&amp;gt;# 修改文件权限  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>EliToviyah</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1276&amp;oldid=prev</id>
		<title>EliToviyah：​增加一条解释</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1276&amp;oldid=prev"/>
		<updated>2026-01-29T01:18:30Z</updated>

		<summary type="html">&lt;p&gt;增加一条解释&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年1月28日 (三) 18:18的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l49&quot;&gt;第49行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第49行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== 安装jq ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== 安装jq ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;用于解析api返回的复杂内容&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;1. Debian / Ubuntu&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;1. Debian / Ubuntu&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>EliToviyah</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1265&amp;oldid=prev</id>
		<title>EliToviyah：​修复排版问题</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1265&amp;oldid=prev"/>
		<updated>2026-01-28T08:04:57Z</updated>

		<summary type="html">&lt;p&gt;修复排版问题&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年1月28日 (三) 01:04的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot;&gt;第18行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第18行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;务必保管好bot token 和 chat_id&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;务必保管好bot token 和 chat_id&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 获取搬瓦工api_key和veid(服务器id) ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/ins&gt;== 获取搬瓦工api_key和veid(服务器id) &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;请参考: [[搬瓦工api使用]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;请参考: [[搬瓦工api使用]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>EliToviyah</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1264&amp;oldid=prev</id>
		<title>EliToviyah：​创建使用搬瓦工api自动周期性创建快照并telegrambot通知</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E4%BD%BF%E7%94%A8%E6%90%AC%E7%93%A6%E5%B7%A5api%E8%87%AA%E5%8A%A8%E5%91%A8%E6%9C%9F%E6%80%A7%E5%88%9B%E5%BB%BA%E5%BF%AB%E7%85%A7%E5%B9%B6telegrambot%E9%80%9A%E7%9F%A5&amp;diff=1264&amp;oldid=prev"/>
		<updated>2026-01-28T01:22:56Z</updated>

		<summary type="html">&lt;p&gt;创建使用搬瓦工api自动周期性创建快照并telegrambot通知&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
== &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;注意：&amp;#039;&amp;#039;&amp;#039; 创建快照的过程中，虚拟机会自动重启!&amp;#039;&amp;#039; ==&lt;br /&gt;
请先阅读关于 快照、备份与恢复 了解 此项功能 &lt;br /&gt;
&lt;br /&gt;
[[快照、备份与恢复]]&lt;br /&gt;
&lt;br /&gt;
== 使用前 ==&lt;br /&gt;
&lt;br /&gt;
=== 获取telegramBot bot token和chat_id ===&lt;br /&gt;
请参考 [[使用搬瓦工api监控网络流量的使用并telegrambot通知]]&lt;br /&gt;
&lt;br /&gt;
再次提醒：&lt;br /&gt;
&lt;br /&gt;
务必保管好bot token 和 chat_id&lt;br /&gt;
&lt;br /&gt;
务必保管好bot token 和 chat_id&lt;br /&gt;
&lt;br /&gt;
务必保管好bot token 和 chat_id&lt;br /&gt;
&lt;br /&gt;
== 获取搬瓦工api_key和veid(服务器id) ==&lt;br /&gt;
请参考: [[搬瓦工api使用]]&lt;br /&gt;
&lt;br /&gt;
再次提醒:&lt;br /&gt;
&lt;br /&gt;
务必保管好api_key 和 veid 不要泄漏给任何人知道&lt;br /&gt;
&lt;br /&gt;
务必保管好api_key 和 veid 不要泄漏给任何人知道&lt;br /&gt;
&lt;br /&gt;
务必保管好api_key 和 veid 不要泄漏给任何人知道&lt;br /&gt;
&lt;br /&gt;
== 开始配置 ==&lt;br /&gt;
&lt;br /&gt;
=== 切换root账户 ===&lt;br /&gt;
&lt;br /&gt;
* 输入命令：&amp;lt;code&amp;gt;su -&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;(注意：su 后面有个空格和减号，这很重要，代表同时切换环境变量)&amp;#039;&amp;#039;&lt;br /&gt;
* 输入 Root 密码（输入时看不见）。&lt;br /&gt;
* 此时你的提示符会变成 &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;，代表你又是 Root 了。&lt;br /&gt;
&lt;br /&gt;
[[File:Su-.png|border]]&lt;br /&gt;
&lt;br /&gt;
=== 先检查是否安装了jq ===&lt;br /&gt;
输入 &amp;lt;code&amp;gt;jq --version&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果输出&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-bash: jq: command not found&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
说明没有安装&lt;br /&gt;
&lt;br /&gt;
==== 安装jq ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;1. Debian / Ubuntu&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt update sudo apt install jq -y&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2. CentOS / RHEL&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; 如果是 CentOS 7，可能需要先安装 epel-release &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo yum install epel-release -y&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo yum install jq -y&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;如果是 RHEL 8/9 或 AlmaLinux&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo dnf install jq -y&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 验证是否安装成功 ===&lt;br /&gt;
安装完成后，你可以输入&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;jq --version&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Jqcheck.png|border]]&lt;br /&gt;
&lt;br /&gt;
=== 脚本 ===&lt;br /&gt;
需要修改的地方&lt;br /&gt;
&lt;br /&gt;
VEID=&amp;quot;你的VEID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
API_KEY=&amp;quot;你的API_KEY&amp;quot;&lt;br /&gt;
&lt;br /&gt;
TG_BOT_TOKEN=&amp;quot;你的BOT_TOKEN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
TG_CHAT_ID=&amp;quot;你的CHAT_ID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TAG_PREFIX=&amp;quot;bwgApiAutoSnapShot&amp;quot; #快照描述的前缀 作为判断快照是否创建、删除、锁定的重要依据&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MAX_LOG_LINES=500  # 设置日志最大保留行数，超过则清空&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LOG_FILE=&amp;quot;/var/log/bwg_snapshot.log&amp;quot; # 日志文件路径&lt;br /&gt;
----检查 /root/autosnapshot.sh 是否存在&lt;br /&gt;
&lt;br /&gt;
输入 &amp;lt;code&amp;gt;ls /root/autosnapshot.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Checkfilehave.png|border]]&lt;br /&gt;
&lt;br /&gt;
上面 蓝色框框就是文件不存在 就可以不修改文件名&lt;br /&gt;
&lt;br /&gt;
下面的红色框框 就是文件存在 需要修改文件名字 /root/这里是文件名字.sh 比如修改成/root/autosnapshot11.sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
把下面内容修改后 就可以复制粘贴到ssh里面 然后按回车 就可以创建脚本文件了&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;cat &amp;lt;&amp;lt; &amp;#039;EOF&amp;#039; &amp;gt; /root/autosnapshot.sh&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ================= 配置区域 =================&lt;br /&gt;
VEID=&amp;quot;你的VEID&amp;quot;&lt;br /&gt;
API_KEY=&amp;quot;你的API_KEY&amp;quot;&lt;br /&gt;
TG_BOT_TOKEN=&amp;quot;你的BOT_TOKEN&amp;quot;&lt;br /&gt;
TG_CHAT_ID=&amp;quot;你的CHAT_ID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
MAX_LOG_LINES=500  # 设置日志最大保留行数，超过则清空&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LOG_FILE=&amp;quot;/var/log/bwg_snapshot.log&amp;quot;&lt;br /&gt;
TAG_PREFIX=&amp;quot;bwgApiAutoSnapShot&amp;quot;&lt;br /&gt;
# ===========================================&lt;br /&gt;
&lt;br /&gt;
API_URL=&amp;quot;https://api.64clouds.com/v1&amp;quot;&lt;br /&gt;
DATE_TODAY=$(date +&amp;quot;%Y_%m_%d&amp;quot;)&lt;br /&gt;
CURRENT_SNAPSHOT_NAME=&amp;quot;${TAG_PREFIX}_${DATE_TODAY}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
log() {&lt;br /&gt;
    # 检查日志文件是否存在&lt;br /&gt;
    if [ -f &amp;quot;$LOG_FILE&amp;quot; ]; then&lt;br /&gt;
        # 获取当前行数&lt;br /&gt;
        local current_lines=$(grep -c &amp;quot;&amp;quot; &amp;quot;$LOG_FILE&amp;quot;)&lt;br /&gt;
        if [ &amp;quot;$current_lines&amp;quot; -gt &amp;quot;$MAX_LOG_LINES&amp;quot; ]; then&lt;br /&gt;
            # 超过行数，保留最后 10 行并标记清空，或者直接清空&lt;br /&gt;
            echo &amp;quot;[$(date &amp;#039;+%Y-%m-%d %H:%M:%S&amp;#039;)] 日志达到上限，执行自动清理。&amp;quot; &amp;gt; &amp;quot;$LOG_FILE&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
    fi&lt;br /&gt;
    # 正常写入日志&lt;br /&gt;
    echo &amp;quot;[$(date &amp;#039;+%Y-%m-%d %H:%M:%S&amp;#039;)] $1&amp;quot; &amp;gt;&amp;gt; &amp;quot;$LOG_FILE&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
send_tg() {&lt;br /&gt;
    local msg=&amp;quot;$1&amp;quot;&lt;br /&gt;
    # 发送 TG 消息并根据 curl 状态码记录日志&lt;br /&gt;
    curl -s -X POST &amp;quot;https://api.telegram.org/bot${TG_BOT_TOKEN}/sendMessage&amp;quot; \&lt;br /&gt;
        -d &amp;quot;chat_id=${TG_CHAT_ID}&amp;quot; \&lt;br /&gt;
        -d &amp;quot;text=${msg}&amp;quot; \&lt;br /&gt;
        -d &amp;quot;disable_notification=true&amp;quot; &amp;gt; /dev/null&lt;br /&gt;
    &lt;br /&gt;
    if [ $? -eq 0 ]; then&lt;br /&gt;
        log &amp;quot;Telegram 通知发送成功: $msg&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        log &amp;quot;Telegram 通知发送失败，请检查网络或 Token。&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
call_api() {&lt;br /&gt;
    local endpoint=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local extra_params=&amp;quot;$2&amp;quot;&lt;br /&gt;
    # --max-time 30: 设置最大超时时间为30秒&lt;br /&gt;
    # --retry 3: 如果失败自动重试3次&lt;br /&gt;
    curl -s --max-time 30 --retry 3 -X POST &amp;quot;${API_URL}/${endpoint}&amp;quot; \&lt;br /&gt;
         -d &amp;quot;veid=${VEID}&amp;quot; \&lt;br /&gt;
         -d &amp;quot;api_key=${API_KEY}&amp;quot; \&lt;br /&gt;
         ${extra_params}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# 【新增函数】提取快照数据的公共逻辑&lt;br /&gt;
get_snapshot_map() {&lt;br /&gt;
    echo &amp;quot;$SNAPSHOT_LIST&amp;quot; | jq -r --arg tag &amp;quot;$TAG_PREFIX&amp;quot; &amp;#039;&lt;br /&gt;
        .snapshots[] | &lt;br /&gt;
        select(try (.description | @base64d) catch &amp;quot;&amp;quot; | contains($tag)) | &lt;br /&gt;
        &amp;quot;\(.sticky)|\((.description | @base64d))|\(.fileName)&amp;quot;&lt;br /&gt;
    &amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# 预检&lt;br /&gt;
if ! command -v jq &amp;amp;&amp;gt; /dev/null; then&lt;br /&gt;
    log &amp;quot;错误: 未安装 jq，请安装jq&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
log &amp;quot;--- 脚本启动 ---&amp;quot;&lt;br /&gt;
SNAPSHOT_LIST=$(call_api &amp;quot;snapshot/list&amp;quot; &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# ================= 模式 1: 开机补刀/清理逻辑 (默认) =================&lt;br /&gt;
if [[ &amp;quot;$1&amp;quot; != &amp;quot;-c&amp;quot; ]]; then&lt;br /&gt;
    log &amp;quot;进入开机自检模式...&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    # 调用函数获取数据&lt;br /&gt;
    MAP_DATA=$(get_snapshot_map)&lt;br /&gt;
&lt;br /&gt;
    # 使用 grep -c 直接统计行数，不再使用 wc -l&lt;br /&gt;
    count_a=$(echo &amp;quot;$MAP_DATA&amp;quot; | grep -c &amp;quot;^true&amp;quot;)&lt;br /&gt;
    count_b=$(echo &amp;quot;$MAP_DATA&amp;quot; | grep -c &amp;quot;^false&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    log &amp;quot;开机自检状态: 符合前缀的置顶数 $count_a, 符合前缀的未置顶数 $count_b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if [ &amp;quot;$count_a&amp;quot; -eq 0 ] &amp;amp;&amp;amp; [ &amp;quot;$count_b&amp;quot; -eq 0 ]; then&lt;br /&gt;
        log &amp;quot;状态 [0,0]：未发现任何相关快照，无需操作。&amp;quot;&lt;br /&gt;
        exit 0&lt;br /&gt;
&lt;br /&gt;
    elif [ &amp;quot;$count_b&amp;quot; -eq 1 ]; then&lt;br /&gt;
        NEW_FILENAME=$(echo &amp;quot;$MAP_DATA&amp;quot; | grep &amp;quot;^false&amp;quot; | cut -d &amp;quot;|&amp;quot; -f 3)&lt;br /&gt;
        NEW_DESC=$(echo &amp;quot;$MAP_DATA&amp;quot; | grep &amp;quot;^false&amp;quot; | cut -d &amp;quot;|&amp;quot; -f 2)&lt;br /&gt;
        &lt;br /&gt;
        if [ &amp;quot;$count_a&amp;quot; -eq 1 ]; then&lt;br /&gt;
            OLD_FILENAME=$(echo &amp;quot;$MAP_DATA&amp;quot; | grep &amp;quot;^true&amp;quot; | cut -d &amp;quot;|&amp;quot; -f 3)&lt;br /&gt;
            OLD_DESC=$(echo &amp;quot;$MAP_DATA&amp;quot; | grep &amp;quot;^true&amp;quot; | cut -d &amp;quot;|&amp;quot; -f 2)&lt;br /&gt;
            &lt;br /&gt;
            log &amp;quot;发现新快照，正在删除旧的已置顶快照: $OLD_DESC&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
            DEL_RES=$(call_api &amp;quot;snapshot/delete&amp;quot; &amp;quot;--data-urlencode snapshot=${OLD_FILENAME}&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            # 【替换 1】使用 jq 判断删除结果&lt;br /&gt;
            API_ERR_DEL=$(echo &amp;quot;$DEL_RES&amp;quot; | jq -r &amp;#039;.error&amp;#039; 2&amp;gt;/dev/null)&lt;br /&gt;
            if [ &amp;quot;$API_ERR_DEL&amp;quot; = &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
                log &amp;quot;旧快照删除成功。&amp;quot;&lt;br /&gt;
                DEL_MSG=&amp;quot;已成功删除旧快照: ${OLD_DESC}。&amp;quot;&lt;br /&gt;
            else&lt;br /&gt;
                log &amp;quot;旧快照删除失败: $DEL_RES&amp;quot;&lt;br /&gt;
                DEL_MSG=&amp;quot;删除旧快照发生错误。&amp;quot;&lt;br /&gt;
            fi&lt;br /&gt;
        fi&lt;br /&gt;
        # 锁定新快照(b)&lt;br /&gt;
        log &amp;quot;正在锁定新快照: $NEW_DESC ...&amp;quot;&lt;br /&gt;
        LOCK_RES=$(call_api &amp;quot;snapshot/toggleSticky&amp;quot; &amp;quot;--data-urlencode snapshot=${NEW_FILENAME} -d sticky=1&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # 使用 jq 解析 error 字段的值是否等于 0&lt;br /&gt;
        API_ERROR=$(echo &amp;quot;$LOCK_RES&amp;quot; | jq -r &amp;#039;.error&amp;#039; 2&amp;gt;/dev/null)&lt;br /&gt;
&lt;br /&gt;
        if [ &amp;quot;$API_ERROR&amp;quot; = &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
            log &amp;quot;新快照锁定成功。&amp;quot;&lt;br /&gt;
            send_tg &amp;quot;✅ 快照更替完成！${DEL_MSG}新快照 ${NEW_DESC} 已成功锁定。&amp;quot;&lt;br /&gt;
            exit 0&lt;br /&gt;
        else&lt;br /&gt;
            log &amp;quot;新快照锁定失败，API返回: $LOCK_RES&amp;quot;&lt;br /&gt;
            send_tg &amp;quot;❌ ${DEL_MSG}但新快照 ${NEW_DESC} 锁定失败，解析出的错误码为: ${API_ERROR}&amp;quot;&lt;br /&gt;
            exit 1&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
    else&lt;br /&gt;
        log &amp;quot;自检状态 [$count_a,$count_b]：不满足自动更替条件。&amp;quot;&lt;br /&gt;
        send_tg &amp;quot;ℹ️ 搬瓦工自检报告：当前状态为 [$count_a,$count_b]，未达到快照更迭条件,脚本未执行操作。请手动查看..&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
    fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# ================= 模式 2: 创建逻辑 (-c 参数) =================&lt;br /&gt;
log &amp;quot;进入快照创建模式 (-c)...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 调用函数获取数据&lt;br /&gt;
MAP_DATA=$(get_snapshot_map)&lt;br /&gt;
&lt;br /&gt;
count_a=$(echo &amp;quot;$MAP_DATA&amp;quot; | grep -c &amp;quot;^true&amp;quot;)&lt;br /&gt;
count_b=$(echo &amp;quot;$MAP_DATA&amp;quot; | grep -c &amp;quot;^false&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
log &amp;quot;状态检查: 符合前缀的已置顶快照数 $count_a, 符合前缀的未置顶的快照数 $count_b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
DO_CREATE=false&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$count_a&amp;quot; -eq 0 ] &amp;amp;&amp;amp; [ &amp;quot;$count_b&amp;quot; -eq 0 ]; then&lt;br /&gt;
    log &amp;quot;状态 [0,0]：准备发起首次创建。&amp;quot;&lt;br /&gt;
    DO_CREATE=true&lt;br /&gt;
elif [ &amp;quot;$count_a&amp;quot; -eq 1 ] &amp;amp;&amp;amp; [ &amp;quot;$count_b&amp;quot; -eq 0 ]; then&lt;br /&gt;
    log &amp;quot;状态 [1,0]：准备创建新的备份。&amp;quot;&lt;br /&gt;
    DO_CREATE=true&lt;br /&gt;
elif [ &amp;quot;$count_a&amp;quot; -eq 0 ] &amp;amp;&amp;amp; [ &amp;quot;$count_b&amp;quot; -eq 1 ]; then&lt;br /&gt;
    log &amp;quot;状态 [0,1]：存在未锁定的快照，无法判断未锁定的快照目的,停止自动化创建快照,请锁定或删除旧快照或更改description&amp;quot;&lt;br /&gt;
    send_tg &amp;quot;⚠️ 存在未锁定的快照，无法判断未锁定的快照目的,停止自动化创建快照,请锁定或删除旧快照或更改description&amp;quot;&lt;br /&gt;
elif [ &amp;quot;$count_a&amp;quot; -eq 2 ]; then&lt;br /&gt;
    log &amp;quot;状态 [$count_a,$count_b]：置顶名额满。&amp;quot;&lt;br /&gt;
    send_tg &amp;quot;🚫 快照置顶名额已满 (2/2)，请手动删除旧备份。&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    log &amp;quot;状态 [$count_a,$count_b]：未知状态，停止操作。&amp;quot;&lt;br /&gt;
    send_tg &amp;quot;❌ 未创建快照：不清楚的快照数量 (a=$count_a, b=$count_b)。&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$DO_CREATE&amp;quot; = true ]; then&lt;br /&gt;
    # 再次检查日期防止重复&lt;br /&gt;
    if echo &amp;quot;$MAP_DATA&amp;quot; | grep -q &amp;quot;$DATE_TODAY&amp;quot;; then&lt;br /&gt;
        log &amp;quot;今日快照已存在，跳过。今日: $DATE_TODAY&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        log &amp;quot;发起创建快照请求: $CURRENT_SNAPSHOT_NAME&amp;quot;&lt;br /&gt;
        CREATE_RESULT=$(call_api &amp;quot;snapshot/create&amp;quot; &amp;quot;--data-urlencode description=${CURRENT_SNAPSHOT_NAME}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # 【替换 2】使用 jq 判断创建请求结果&lt;br /&gt;
        API_ERR_CREATE=$(echo &amp;quot;$CREATE_RESULT&amp;quot; | jq -r &amp;#039;.error&amp;#039; 2&amp;gt;/dev/null)&lt;br /&gt;
        if [ &amp;quot;$API_ERR_CREATE&amp;quot; = &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
            log &amp;quot;创建快照请求成功发送。&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
            log &amp;quot;创建快照请求失败: $CREATE_RESULT&amp;quot;&lt;br /&gt;
            send_tg &amp;quot;⚠️ 搬瓦工 API 创建快照请求返回异常。&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
    fi&lt;br /&gt;
fi&lt;br /&gt;
EOF&amp;lt;/syntaxhighlight&amp;gt;授予运行权限&lt;br /&gt;
&lt;br /&gt;
输入&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod +x /root/autosnapshot.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
查看是否成功 输入 &amp;lt;code&amp;gt;ls -l /root/autosnapshot.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Lsautosnapshot.png|border]]&lt;br /&gt;
&lt;br /&gt;
像蓝色的有x就是成功了 像上面后红色的- 没有x 就是失败了...&lt;br /&gt;
&lt;br /&gt;
=== 配置开机置顶快照 和定期创建快照 ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;0 3 * * 1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
这是一个cron的表达式 用来设定 运行时间的&lt;br /&gt;
&lt;br /&gt;
0 代表 第 0 分钟的时候&lt;br /&gt;
&lt;br /&gt;
3 代表 第3小时的时候 就是凌晨3点&lt;br /&gt;
&lt;br /&gt;
第一个 * 代表 哪一天 *代表所有天&lt;br /&gt;
&lt;br /&gt;
第二个 * 代表 哪一月 *代表所有月&lt;br /&gt;
&lt;br /&gt;
1 代表 星期一&lt;br /&gt;
&lt;br /&gt;
合起来就是&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;每周一的凌晨3:00运行 创建快照的指令&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
可以按照自己的时间自行修改&lt;br /&gt;
&lt;br /&gt;
0 3 * * 1 root /usr/local/bin/bwg_snap.sh -c &amp;gt;&amp;gt; /var/log/bwg_snapshot.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
开机启动检查是否有未锁定的快照(认为是上一次的快照) &lt;br /&gt;
&lt;br /&gt;
如果文件名 改了的话 这里也要修改 其他的地方不需要 &lt;br /&gt;
&lt;br /&gt;
@reboot root /usr/local/bin/bwg_snap.sh &amp;gt;&amp;gt; /var/log/bwg_snapshot.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查定时文件是否存在&lt;br /&gt;
&lt;br /&gt;
输入 &amp;lt;code&amp;gt;ls /etc/cron.d/bwg_snap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Checkbwgsnap.png|border]]&lt;br /&gt;
&lt;br /&gt;
上面红色框框 就是 文件不存在 不需要修改名字&lt;br /&gt;
&lt;br /&gt;
下面蓝色框框 就是 文件存在 需要文件名字../etc/cron.d/你需要修改的名字  比如/etc/cron.d/bwg_snap1&lt;br /&gt;
&lt;br /&gt;
修改后 复制粘贴到ssh里面 回车就行了&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/cron.d/bwg_snap&lt;br /&gt;
# 每周一凌晨 3 点创建快照&lt;br /&gt;
0 3 * * 1 root /usr/local/bin/bwg_snap.sh -c &amp;gt;&amp;gt; /var/log/bwg_snapshot.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
# 开机自启&lt;br /&gt;
@reboot root /usr/local/bin/bwg_snap.sh &amp;gt;&amp;gt; /var/log/bwg_snapshot.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
EOF&amp;lt;/syntaxhighlight&amp;gt;# 修改文件权限 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod 644 /etc/cron.d/bwg_snap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Finalcheck.png|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
如果你想测试 可以输入&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/root/autosnapshot.sh -c&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
根据时间 一天只能创建一个快照....脚本设定 非api设置的...&lt;br /&gt;
&lt;br /&gt;
创建快照 系统会重启 请注意为保存的数据会丢失...&lt;br /&gt;
&lt;br /&gt;
开机后应该会自动置顶这个快照 或 手动输入 &amp;lt;code&amp;gt;/root/autosnapshot.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
检查是否存在 有前缀名但未置顶的快照 或 有前缀 或 有一个 有前缀的并且置顶的快照 和 一个 有前缀未置顶的快照&lt;br /&gt;
&lt;br /&gt;
都会执行 删除置顶的快照(如果有)然后置顶那个 未置顶的快照&lt;br /&gt;
&lt;br /&gt;
==== 查看日志 &amp;lt;code&amp;gt;cat /var/log/bwg_snapshot.log&amp;lt;/code&amp;gt; ====&lt;br /&gt;
[[File:Finalimg.png|border]]&lt;/div&gt;</summary>
		<author><name>EliToviyah</name></author>
	</entry>
</feed>