```
# credential example
install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf \
%{buildroot}/etc/mysql_backup/.ldmgr.cnf
========================================
正确格式(必须紧贴)
正确写法:
install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf \
%{buildroot}/etc/mysql_backup/.ldmgr.cnf
注意:
\ 后 不能有空格 :是指:ql_backup/config/ldmgr.cnf \的\后面不能有空格,有就会报错:/root/rpmbuild/tmp/rpm-tmp.MVnKem: line 65: /root/rpmbuild/BUILDROOT/etc/mysql_backup/.ldmgr.cnf: No such file or directory
下一行必须紧接
```
```
Name: mysql-backup
Version: 1.0.0
Release: 1%{?dist}
Summary: MySQL multi-instance backup tool
License: GPL
URL: internal
BuildArch: noarch
Requires: bash
Requires: gzip
Requires: util-linux
%description
MySQL backup tool for multi-project and multi-instance environments.
Features:
- Multiple instance backup
- Credential isolation
- Project based configuration
- Automatic cleanup of old backups
- Cron scheduling
- Log rotation support
- flock based concurrency protection
%prep
# nothing required
%build
# nothing required
%install
rm -rf %{buildroot}
#
# Program directory
#
install -d %{buildroot}/usr/local/mysql_backup
#
# Config directory
#
install -d %{buildroot}/etc/mysql_backup
#
# Runtime directories
#
install -d %{buildroot}/var/lib/mysql_backup
install -d %{buildroot}/var/lock/mysql_backup
install -d %{buildroot}/app/mysql_backup
install -d %{buildroot}/data/logs/mysql_backup
#
# Cron and logrotate directories
#
install -d %{buildroot}/etc/cron.d
install -d %{buildroot}/etc/logrotate.d
#
# Install program
#
install -m 750 %{_sourcedir}/mysql_backup/mysql_backup.sh \
%{buildroot}/usr/local/mysql_backup/
install -m 640 %{_sourcedir}/mysql_backup/db.cfg \
%{buildroot}/usr/local/mysql_backup/
#
# Credential template
#
install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf \
%{buildroot}/etc/mysql_backup/.ldmgr.cnf
#
# Cron job
#
cat > %{buildroot}/etc/cron.d/mysql_backup << 'EOF'
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=""
40 03 * * * mysql_backup /usr/local/mysql_backup/mysql_backup.sh ldmgr 10.75.17.10 3306 >> /data/logs/mysql_backup/backup.log 2>&1
EOF
chmod 644 %{buildroot}/etc/cron.d/mysql_backup
#
# Logrotate
#
cat > %{buildroot}/etc/logrotate.d/mysql_backup << 'EOF'
/data/logs/mysql_backup/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 640 mysql_backup mysql_backup
}
EOF
%pre
#
# Create system group
#
getent group mysql_backup >/dev/null || groupadd -r mysql_backup
#
# Create system user
#
if ! getent passwd mysql_backup >/dev/null; then
useradd -r \
-g mysql_backup \
-d /var/lib/mysql_backup \
-s /sbin/nologin \
-c "MySQL Backup Service" \
mysql_backup
fi
%post
#
# Ensure runtime directories exist
#
mkdir -p /var/lib/mysql_backup
mkdir -p /var/lock/mysql_backup
mkdir -p /app/mysql_backup
mkdir -p /data/logs/mysql_backup
#
# Ownership
#
chown mysql_backup:mysql_backup /var/lib/mysql_backup
chown mysql_backup:mysql_backup /var/lock/mysql_backup
chown mysql_backup:mysql_backup /app/mysql_backup
chown mysql_backup:mysql_backup /data/logs/mysql_backup
#
# Permissions
#
chmod 750 /var/lock/mysql_backup
chmod 750 /app/mysql_backup
chmod 750 /data/logs/mysql_backup
#
# SELinux compatibility
#
if command -v restorecon >/dev/null 2>&1; then
restorecon -R \
/var/lib/mysql_backup \
/var/lock/mysql_backup \
/app/mysql_backup \
/data/logs/mysql_backup \
2>/dev/null || true
fi
echo "mysql-backup installed successfully."
%preun
# nothing required
%files
%defattr(-,root,root,-)
#
# parent directories
#
%dir /app
%dir /data
%dir /data/logs
#
# runtime directories
#
%dir %attr(0750,mysql_backup,mysql_backup) /var/lib/mysql_backup
%dir %attr(0750,mysql_backup,mysql_backup) /var/lock/mysql_backup
%dir %attr(0750,mysql_backup,mysql_backup) /app/mysql_backup
%dir %attr(0750,mysql_backup,mysql_backup) /data/logs/mysql_backup
#
# program
#
%dir %attr(0750,root,root) /usr/local/mysql_backup
/usr/local/mysql_backup/mysql_backup.sh
%config(noreplace) /usr/local/mysql_backup/db.cfg
#
# configuration
#
%dir %attr(0750,root,mysql_backup) /etc/mysql_backup
%config(noreplace) /etc/mysql_backup/.ldmgr.cnf
#
# cron
#
%config(noreplace) /etc/cron.d/mysql_backup
#
# logrotate
#
%config(noreplace) /etc/logrotate.d/mysql_backup
%changelog
* Mon Mar 09 2026 DevOps Team
- Enterprise initial release
- Multi-instance MySQL backup support
- Cron scheduling
- Logrotate integration
- flock lock protection
```
# credential example
install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf \
%{buildroot}/etc/mysql_backup/.ldmgr.cnf
========================================
正确格式(必须紧贴)
正确写法:
install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf \
%{buildroot}/etc/mysql_backup/.ldmgr.cnf
注意:
\ 后 不能有空格 :是指:ql_backup/config/ldmgr.cnf \的\后面不能有空格,有就会报错:/root/rpmbuild/tmp/rpm-tmp.MVnKem: line 65: /root/rpmbuild/BUILDROOT/etc/mysql_backup/.ldmgr.cnf: No such file or directory
下一行必须紧接
```
```
Name: mysql-backup
Version: 1.0.0
Release: 1%{?dist}
Summary: MySQL multi-instance backup tool
License: GPL
URL: internal
BuildArch: noarch
Requires: bash
Requires: gzip
Requires: util-linux
%description
MySQL backup tool for multi-project and multi-instance environments.
Features:
- Multiple instance backup
- Credential isolation
- Project based configuration
- Automatic cleanup of old backups
- Cron scheduling
- Log rotation support
- flock based concurrency protection
%prep
# nothing required
%build
# nothing required
%install
rm -rf %{buildroot}
#
# Program directory
#
install -d %{buildroot}/usr/local/mysql_backup
#
# Config directory
#
install -d %{buildroot}/etc/mysql_backup
#
# Runtime directories
#
install -d %{buildroot}/var/lib/mysql_backup
install -d %{buildroot}/var/lock/mysql_backup
install -d %{buildroot}/app/mysql_backup
install -d %{buildroot}/data/logs/mysql_backup
#
# Cron and logrotate directories
#
install -d %{buildroot}/etc/cron.d
install -d %{buildroot}/etc/logrotate.d
#
# Install program
#
install -m 750 %{_sourcedir}/mysql_backup/mysql_backup.sh \
%{buildroot}/usr/local/mysql_backup/
install -m 640 %{_sourcedir}/mysql_backup/db.cfg \
%{buildroot}/usr/local/mysql_backup/
#
# Credential template
#
install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf \
%{buildroot}/etc/mysql_backup/.ldmgr.cnf
#
# Cron job
#
cat > %{buildroot}/etc/cron.d/mysql_backup << 'EOF'
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=""
40 03 * * * mysql_backup /usr/local/mysql_backup/mysql_backup.sh ldmgr 10.75.17.10 3306 >> /data/logs/mysql_backup/backup.log 2>&1
EOF
chmod 644 %{buildroot}/etc/cron.d/mysql_backup
#
# Logrotate
#
cat > %{buildroot}/etc/logrotate.d/mysql_backup << 'EOF'
/data/logs/mysql_backup/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 640 mysql_backup mysql_backup
}
EOF
%pre
#
# Create system group
#
getent group mysql_backup >/dev/null || groupadd -r mysql_backup
#
# Create system user
#
if ! getent passwd mysql_backup >/dev/null; then
useradd -r \
-g mysql_backup \
-d /var/lib/mysql_backup \
-s /sbin/nologin \
-c "MySQL Backup Service" \
mysql_backup
fi
%post
#
# Ensure runtime directories exist
#
mkdir -p /var/lib/mysql_backup
mkdir -p /var/lock/mysql_backup
mkdir -p /app/mysql_backup
mkdir -p /data/logs/mysql_backup
#
# Ownership
#
chown mysql_backup:mysql_backup /var/lib/mysql_backup
chown mysql_backup:mysql_backup /var/lock/mysql_backup
chown mysql_backup:mysql_backup /app/mysql_backup
chown mysql_backup:mysql_backup /data/logs/mysql_backup
#
# Permissions
#
chmod 750 /var/lock/mysql_backup
chmod 750 /app/mysql_backup
chmod 750 /data/logs/mysql_backup
#
# SELinux compatibility
#
if command -v restorecon >/dev/null 2>&1; then
restorecon -R \
/var/lib/mysql_backup \
/var/lock/mysql_backup \
/app/mysql_backup \
/data/logs/mysql_backup \
2>/dev/null || true
fi
echo "mysql-backup installed successfully."
%preun
# nothing required
%files
%defattr(-,root,root,-)
#
# parent directories
#
%dir /app
%dir /data
%dir /data/logs
#
# runtime directories
#
%dir %attr(0750,mysql_backup,mysql_backup) /var/lib/mysql_backup
%dir %attr(0750,mysql_backup,mysql_backup) /var/lock/mysql_backup
%dir %attr(0750,mysql_backup,mysql_backup) /app/mysql_backup
%dir %attr(0750,mysql_backup,mysql_backup) /data/logs/mysql_backup
#
# program
#
%dir %attr(0750,root,root) /usr/local/mysql_backup
/usr/local/mysql_backup/mysql_backup.sh
%config(noreplace) /usr/local/mysql_backup/db.cfg
#
# configuration
#
%dir %attr(0750,root,mysql_backup) /etc/mysql_backup
%config(noreplace) /etc/mysql_backup/.ldmgr.cnf
#
# cron
#
%config(noreplace) /etc/cron.d/mysql_backup
#
# logrotate
#
%config(noreplace) /etc/logrotate.d/mysql_backup
%changelog
* Mon Mar 09 2026 DevOps Team
- Enterprise initial release
- Multi-instance MySQL backup support
- Cron scheduling
- Logrotate integration
- flock lock protection
```
作者:jack@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/13290/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jack 编辑于2026-3-9 16:06
评论列表


[一定注意]在 MacBook 上使用了 /var/data/... 这