<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>https://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>https://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]rpmbuild的打包技术在install 安装写成多行时的右斜杠后面不能有空格是特别要注意的点～]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Mon, 09 Mar 2026 08:02:31 +0000</pubDate> 
<guid>https://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	```<br/># credential example<br/>install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/etc/mysql_backup/.ldmgr.cnf<br/><br/><br/>========================================<br/>正确格式（必须紧贴）<br/>正确写法：<br/>install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/etc/mysql_backup/.ldmgr.cnf<br/>注意：<br/>&#92; 后 不能有空格 :是指：ql_backup/config/ldmgr.cnf &#92;的&#92;后面不能有空格，有就会报错：/root/rpmbuild/tmp/rpm-tmp.MVnKem: line 65: /root/rpmbuild/BUILDROOT/etc/mysql_backup/.ldmgr.cnf: No such file or directory<br/>下一行必须紧接<br/>```<br/><br/>```<br/>Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql-backup<br/>Version:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0.0<br/>Release:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1%{?dist}<br/>Summary:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySQL multi-instance backup tool<br/><br/>License:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPL<br/>URL:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;internal<br/>BuildArch:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noarch<br/><br/>Requires:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bash<br/>Requires:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gzip<br/>Requires:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; util-linux<br/><br/>%description<br/>MySQL backup tool for multi-project and multi-instance environments.<br/><br/>Features:<br/>- Multiple instance backup<br/>- Credential isolation<br/>- Project based configuration<br/>- Automatic cleanup of old backups<br/>- Cron scheduling<br/>- Log rotation support<br/>- flock based concurrency protection<br/><br/><br/>%prep<br/># nothing required<br/><br/><br/>%build<br/># nothing required<br/><br/><br/>%install<br/>rm -rf %{buildroot}<br/><br/>#<br/># Program directory<br/>#<br/><br/>install -d %{buildroot}/usr/local/mysql_backup<br/><br/>#<br/># Config directory<br/>#<br/><br/>install -d %{buildroot}/etc/mysql_backup<br/><br/>#<br/># Runtime directories<br/>#<br/><br/>install -d %{buildroot}/var/lib/mysql_backup<br/>install -d %{buildroot}/var/lock/mysql_backup<br/>install -d %{buildroot}/app/mysql_backup<br/>install -d %{buildroot}/data/logs/mysql_backup<br/><br/>#<br/># Cron and logrotate directories<br/>#<br/><br/>install -d %{buildroot}/etc/cron.d<br/>install -d %{buildroot}/etc/logrotate.d<br/><br/>#<br/># Install program<br/>#<br/><br/>install -m 750 %{_sourcedir}/mysql_backup/mysql_backup.sh &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/usr/local/mysql_backup/<br/><br/>install -m 640 %{_sourcedir}/mysql_backup/db.cfg &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/usr/local/mysql_backup/<br/><br/>#<br/># Credential template<br/>#<br/><br/>install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/etc/mysql_backup/.ldmgr.cnf<br/><br/>#<br/># Cron job<br/>#<br/><br/>cat &gt; %{buildroot}/etc/cron.d/mysql_backup &lt;&lt; &#039;EOF&#039;<br/>SHELL=/bin/bash<br/>PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin<br/>MAILTO=&quot;&quot;<br/><br/>40 03 * * * mysql_backup /usr/local/mysql_backup/mysql_backup.sh ldmgr 10.75.17.10 3306 &gt;&gt; /data/logs/mysql_backup/backup.log 2&gt;&amp;1<br/>EOF<br/><br/>chmod 644 %{buildroot}/etc/cron.d/mysql_backup<br/><br/>#<br/># Logrotate<br/>#<br/><br/>cat &gt; %{buildroot}/etc/logrotate.d/mysql_backup &lt;&lt; &#039;EOF&#039;<br/>/data/logs/mysql_backup/*.log {<br/>&nbsp;&nbsp;&nbsp;&nbsp;daily<br/>&nbsp;&nbsp;&nbsp;&nbsp;rotate 30<br/>&nbsp;&nbsp;&nbsp;&nbsp;compress<br/>&nbsp;&nbsp;&nbsp;&nbsp;delaycompress<br/>&nbsp;&nbsp;&nbsp;&nbsp;missingok<br/>&nbsp;&nbsp;&nbsp;&nbsp;notifempty<br/>&nbsp;&nbsp;&nbsp;&nbsp;create 640 mysql_backup mysql_backup<br/>}<br/>EOF<br/><br/><br/>%pre<br/><br/>#<br/># Create system group<br/>#<br/><br/>getent group mysql_backup &gt;/dev/null &#124;&#124; groupadd -r mysql_backup<br/><br/>#<br/># Create system user<br/>#<br/><br/>if ! getent passwd mysql_backup &gt;/dev/null; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;useradd -r &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-g mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-d /var/lib/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-s /sbin/nologin &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-c &quot;MySQL Backup Service&quot; &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_backup<br/>fi<br/><br/><br/>%post<br/><br/>#<br/># Ensure runtime directories exist<br/>#<br/><br/>mkdir -p /var/lib/mysql_backup<br/>mkdir -p /var/lock/mysql_backup<br/>mkdir -p /app/mysql_backup<br/>mkdir -p /data/logs/mysql_backup<br/><br/>#<br/># Ownership<br/>#<br/><br/>chown mysql_backup:mysql_backup /var/lib/mysql_backup<br/>chown mysql_backup:mysql_backup /var/lock/mysql_backup<br/>chown mysql_backup:mysql_backup /app/mysql_backup<br/>chown mysql_backup:mysql_backup /data/logs/mysql_backup<br/><br/>#<br/># Permissions<br/>#<br/><br/>chmod 750 /var/lock/mysql_backup<br/>chmod 750 /app/mysql_backup<br/>chmod 750 /data/logs/mysql_backup<br/><br/>#<br/># SELinux compatibility<br/>#<br/><br/>if command -v restorecon &gt;/dev/null 2&gt;&amp;1; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;restorecon -R &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/var/lib/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/var/lock/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/app/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/data/logs/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&gt;/dev/null &#124;&#124; true<br/>fi<br/><br/>echo &quot;mysql-backup installed successfully.&quot;<br/><br/><br/>%preun<br/># nothing required<br/><br/><br/>%files<br/>%defattr(-,root,root,-)<br/><br/>#<br/># parent directories<br/>#<br/><br/>%dir /app<br/>%dir /data<br/>%dir /data/logs<br/><br/>#<br/># runtime directories<br/>#<br/><br/>%dir %attr(0750,mysql_backup,mysql_backup) /var/lib/mysql_backup<br/>%dir %attr(0750,mysql_backup,mysql_backup) /var/lock/mysql_backup<br/>%dir %attr(0750,mysql_backup,mysql_backup) /app/mysql_backup<br/>%dir %attr(0750,mysql_backup,mysql_backup) /data/logs/mysql_backup<br/><br/>#<br/># program<br/>#<br/><br/>%dir %attr(0750,root,root) /usr/local/mysql_backup<br/>/usr/local/mysql_backup/mysql_backup.sh<br/>%config(noreplace) /usr/local/mysql_backup/db.cfg<br/><br/>#<br/># configuration<br/>#<br/><br/>%dir %attr(0750,root,mysql_backup) /etc/mysql_backup<br/>%config(noreplace) /etc/mysql_backup/.ldmgr.cnf<br/><br/>#<br/># cron<br/>#<br/><br/>%config(noreplace) /etc/cron.d/mysql_backup<br/><br/>#<br/># logrotate<br/>#<br/><br/>%config(noreplace) /etc/logrotate.d/mysql_backup<br/><br/><br/>%changelog<br/><br/>* Mon Mar 09 2026 DevOps Team<br/>- Enterprise initial release<br/>- Multi-instance MySQL backup support<br/>- Cron scheduling<br/>- Logrotate integration<br/>- flock lock protection<br/>```
]]>
</description>
</item><item>
<link>https://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]rpmbuild的打包技术在install 安装写成多行时的右斜杠后面不能有空格是特别要注意的点～]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>