diff --git a/backupninja-1.1.0-dayofweek.patch b/backupninja-1.1.0-dayofweek.patch new file mode 100644 index 0000000..1c97852 --- /dev/null +++ b/backupninja-1.1.0-dayofweek.patch @@ -0,0 +1,25 @@ +From a0f5063e8b31df18b397a91095f33d4efe39f58e Mon Sep 17 00:00:00 2001 +From: Jerome Charaoui +Date: Fri, 13 Jul 2018 10:08:02 -0400 +Subject: [PATCH] Fix warning about malformed day component in 'when' + +--- + src/backupninja.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/backupninja.in b/src/backupninja.in +index 77afbfd..d6a1045 100755 +--- a/src/backupninja.in ++++ b/src/backupninja.in +@@ -226,7 +226,7 @@ function isnow() { + if [ "$whendayofweek" != "$nowdayofweek" ]; then + whendayofweek=${whendayofweek%s} + if [ "$whendayofweek" != "$nowdayofweek" ]; then +- if [ "$whendayofweek" != "mondays" -a "$whendayofweek" != "tuesdays" -a "$whendayofweek" != "wednesdays" -a "$whendayofweek" != "thursdays" -a "$whendayofweek" != "fridays" -a "$whendayofweek" != "saturdays" -a "$whendayofweek" != "sundays" ]; then ++ if [ "$whendayofweek" != "monday" -a "$whendayofweek" != "tuesday" -a "$whendayofweek" != "wednesday" -a "$whendayofweek" != "thursday" -a "$whendayofweek" != "friday" -a "$whendayofweek" != "saturday" -a "$whendayofweek" != "sunday" ]; then + warning "The day in the 'when' option in the configuration is malformed. Please read the README for examples." + fi + if [ "$at" != "at" ]; then +-- +2.24.1 + diff --git a/backupninja-1.1.0-padding.patch b/backupninja-1.1.0-padding.patch new file mode 100644 index 0000000..1d50770 --- /dev/null +++ b/backupninja-1.1.0-padding.patch @@ -0,0 +1,45 @@ +From f9529d1d3f3714c707f38b8e44ac72a69af5483b Mon Sep 17 00:00:00 2001 +From: Jerome Charaoui +Date: Fri, 13 Jul 2018 21:49:06 -0400 +Subject: [PATCH] Remove zero-padding from nowday and whenday (fixes #9397) + +This fixes cases where the day component of the when parameter resolved +to a non-zero padded integer under 10, such as "when = 1st at 01" + +The comparison against the nowday variable failed consistently since +the date command format used always returned a zero-padded two digit +integer. + +The solution chosen is to avoid generating nowday with zero-padding and +remove any zero-padding from whenday parameter using a more thorough +sed pattern which now also removes any non-alphanumeric characters from +the string. +--- + src/backupninja.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/backupninja.in b/src/backupninja.in +index d6a1045..6da7237 100755 +--- a/src/backupninja.in ++++ b/src/backupninja.in +@@ -186,7 +186,7 @@ function tolower() { + + # simple to integer function + function toint() { +- echo "$1" | tr -d '[:alpha:]' ++ echo "$1" | @SED@ 's/[^0-9]//g;s/^0\+//' + } + + # +@@ -202,7 +202,7 @@ function toint() { + # we grab the current time once, since processing + # all the configs might take more than an hour. + nowtime=`LC_ALL=C date +%H` +-nowday=`LC_ALL=C date +%d` ++nowday=`LC_ALL=C date +%-d` + nowdayofweek=`LC_ALL=C date +%A` + nowdayofweek=`tolower "$nowdayofweek"` + +-- +2.24.1 + diff --git a/backupninja-1.1.0-redhat.patch b/backupninja-1.1.0-redhat.patch new file mode 100644 index 0000000..03a70e4 --- /dev/null +++ b/backupninja-1.1.0-redhat.patch @@ -0,0 +1,56 @@ +--- a/handlers/dup.helper.in 2018-06-29 22:12:42.000000000 +0600 ++++ b/handlers/dup.helper.in 2018-12-30 04:27:40.251026730 +0600 +@@ -624,7 +624,7 @@ + + # Global variables whose '*' shall not be expanded + set -o noglob +- dup_default_includes="/var/spool/cron/crontabs /var/backups /etc /root /home /usr/local/*bin /var/lib/dpkg/status*" ++ dup_default_includes="/var/spool/cron /var/backups /etc /root /home /usr/local/*bin" + dup_default_excludes="/home/*/.gnupg /home/*/.local/share/Trash /home/*/.Trash /home/*/.thumbnails /home/*/.beagle /home/*/.aMule /home/*/gtk-gnutella-downloads /var/cache/backupninja/duplicity" + set +o noglob + +--- a/handlers/rdiff.helper.in 2018-06-29 22:12:42.000000000 +0600 ++++ b/handlers/rdiff.helper.in 2018-12-30 04:27:40.251026730 +0600 +@@ -243,7 +243,7 @@ + if [ "$rdiff_user" = "root" ]; then + booleanBox "install rdiff-backup?" "It seems like the remote machine does not have rdiff-backup installed, I can attempt to install rdiff-backup on the remote machine.\n\n\nDo you want me to attempt this now?" + if [ $? = 0 ]; then +- ssh $rdiff_user@$rdiff_host 'apt-get install rdiff-backup' ++ ssh $rdiff_user@$rdiff_host 'yum install rdiff-backup' + result=$? + echo "Hit return to continue." + read +@@ -437,7 +437,7 @@ + + # Global variables whose '*' shall not be expanded + set -o noglob +- rdiff_includes=(/var/spool/cron/crontabs /var/backups /etc /root /home /usr/local/*bin /var/lib/dpkg/status*) ++ rdiff_includes=(/var/spool/cron /var/backups /etc /root /home /usr/local/*bin) + rdiff_excludes=(/home/*/.gnupg /home/*/.local/share/Trash /home/*/.Trash /home/*/.thumbnails /home/*/.beagle /home/*/.aMule /home/*/gtk-gnutella-downloads /var/cache/backupninja/duplicity) + rdiff_vsincludes= + set +o noglob +--- a/src/ninjahelper.in 2018-06-29 22:12:42.000000000 +0600 ++++ b/src/ninjahelper.in 2018-12-30 04:27:40.251026730 +0600 +@@ -27,11 +27,11 @@ + ## + require_packages() { + for pkg in "$@"; do +- installed=`dpkg -s $pkg | grep 'ok installed'` ++ installed=`yum list installed $pkg 2>/dev/null | grep -i 'installed'` + if [ -z "$installed" ]; then + booleanBox "install $pkg?" "This backup action requires package $pkg. Do you want to install it now?" + if [ $? = 0 ]; then +- apt-get install $pkg ++ yum install $pkg + echo "hit return to continue...." + read + fi +@@ -166,7 +166,7 @@ + echo -n "(yes/no): " + read install + if [ "$install" == "yes" ]; then +- apt-get install dialog ++ yum install dialog + break + elif [ "$install" == "no" ]; then + exit diff --git a/backupninja-1.1.0-whitespaces.patch b/backupninja-1.1.0-whitespaces.patch new file mode 100644 index 0000000..e0e1c06 --- /dev/null +++ b/backupninja-1.1.0-whitespaces.patch @@ -0,0 +1,32 @@ +From 26521d0975affe45aa944621b6e6f32ee3a8cdde Mon Sep 17 00:00:00 2001 +From: Jerome Charaoui +Date: Fri, 13 Jul 2018 10:07:10 -0400 +Subject: [PATCH] Whitespace fixes + +--- + src/backupninja.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/backupninja.in b/src/backupninja.in +index ef8fc2d..77afbfd 100755 +--- a/src/backupninja.in ++++ b/src/backupninja.in +@@ -234,13 +234,13 @@ function isnow() { + fi + if [[ "$whentimeoriginal" != @([0-9][0-9])?(:[0-9][0-9]) ]]; then + warning "The time in the 'when' option in the configuration is malformed or does not exist. Please read the README for examples." +- fi ++ fi + return 0 + fi + fi + elif [ "$whenday" != "$nowday" ]; then + if [ "$whenday" -lt 1 -o "$whenday" -gt 31 ]; then +- warning "The numeric value of the day in the 'when' option in the configuration does not match a day. Please read the README for examples." ++ warning "The numeric value of the day in the 'when' option in the configuration does not match a day. Please read the README for examples." + fi + if [ -z "$whentime" ]; then + warning "The 'when' variable in the configuration file is malformed. You either didn't specify the day or the time. Please read the README for eamples." +-- +2.24.1 + diff --git a/backupninja-1.1.0.tar.gz b/backupninja-1.1.0.tar.gz new file mode 100644 index 0000000..fafcfb4 Binary files /dev/null and b/backupninja-1.1.0.tar.gz differ diff --git a/backupninja-duplicity-version.patch b/backupninja-duplicity-version.patch new file mode 100644 index 0000000..0e933a4 --- /dev/null +++ b/backupninja-duplicity-version.patch @@ -0,0 +1,11 @@ +--- a/handlers/dup.in 2018-06-29 22:12:42.000000000 +0600 ++++ b/handlers/dup.in 2018-12-30 04:27:43.251026730 +0600 +@@ -133,7 +133,7 @@ + fi + + ### duplicity version (ignore anything else than 0-9 and ".") +-duplicity_version="`duplicity --version | @AWK@ '{print $2}' | @SED@ 's/[^.[:digit:]]//g'`" ++duplicity_version="`duplicity --version | @AWK@ 'END{print $2}' | @SED@ 's/[^.[:digit:]]//g'`" + + ### ssh/scp/sftp options (duplicity < 0.4.3 is unsupported) + ## duplicity >= 0.6.17 : paramiko backend diff --git a/backupninja-extbackup-fix.patch b/backupninja-extbackup-fix.patch new file mode 100644 index 0000000..8ebfcdb --- /dev/null +++ b/backupninja-extbackup-fix.patch @@ -0,0 +1,19 @@ +--- a/handlers/dup.in 2018-06-29 22:12:42.000000000 +0600 ++++ b/handlers/dup.in 2018-12-30 04:35:26.675079119 +0600 +@@ -53,13 +53,13 @@ + if [ -n "$signkey" -a -n "$encryptkey" -a "$signkey" != "$encryptkey" ]; then + [ -n "$signpassword" ] || fatal "The signpassword option must be set because signkey is different from encryptkey." + fi +-if [ "`echo $desturl | @AWK@ -F ':' '{print $1}'`" == "s3+http" ]; then ++if [[ "`echo $desturl | @AWK@ -F ':' '{print $1}'`" == "s3+http" ]]; then + [ -n "$awsaccesskeyid" -a -n "$awssecretaccesskey" ] || fatal "AWS access keys must be set for S3 backups." + fi +-if [ "`echo $desturl | @AWK@ -F ':' '{print $1}'`" == "cf+http" ]; then ++if [[ "`echo $desturl | @AWK@ -F ':' '{print $1}'`" == "cf+http" ]]; then + [ -n "$cfusername" -a -n "$cfapikey" ] || fatal "Cloudfiles access keys must be set for S3 backups." + fi +-if [ "`echo $desturl | @AWK@ -F ':' '{print $1}'`" == "dpbx" ]; then ++if [[ "`echo $desturl | @AWK@ -F ':' '{print $1}'`" == "dpbx" ]]; then + [ -n "$dropboxappkey" -a -n "$dropboxappsecret" ] || fatal "Dropbox app ID and secret must be set for Dropbox backups." + + if [ ! -n "$dropboxaccesstoken" ]; then diff --git a/backupninja.spec b/backupninja.spec new file mode 100644 index 0000000..a2a935a --- /dev/null +++ b/backupninja.spec @@ -0,0 +1,61 @@ +Name: backupninja +Version: 1.1.0 +Release: 1 +Summary: Lightweight, extensible backup system +License: GPLv2 +URL: https://0xacab.org/riseuplabs/backupninja +Source0: https://0xacab.org/riseuplabs/backupninja/-/archive/backupninja_upstream/%{version}/backupninja-backupninja_upstream-%{version}.tar.gz#/backupninja-%{version}.tar.gz +Patch0: backupninja-1.1.0-redhat.patch +Patch1: backupninja-duplicity-version.patch +Patch2: backupninja-extbackup-fix.patch +Patch3: backupninja-1.1.0-whitespaces.patch +Patch4: backupninja-1.1.0-dayofweek.patch +Patch5: backupninja-1.1.0-padding.patch +BuildArch: noarch +Requires: cronie gawk logrotate rdiff-backup +%description +Backupninja allows you to coordinate system backup by dropping a few simple +configuration files into /etc/backup.d/. Most programs you might use for making +backups don't have their own configuration file format. Backupninja provides +a centralized way to configure and schedule many different backup utilities. +It allows for secure, remote, incremental file system backup (via rdiff-backup), +compressed incremental data, backup system and hardware info, encrypted remote +backups (via duplicity), safe backup of MySQL/PostgreSQL databases, subversion +or trac repositories, burn CD/DVDs or create ISOs, incremental rsync with +hard-linking. + +%prep +%setup -q -n backupninja-backupninja_upstream-%{version} +%patch0 -p1 -b .redhat +%patch1 -p1 -b .dupver +%patch2 -p1 -b .extbck +%patch3 -p1 -b .wspace +%patch4 -p1 -b .dayswk +%patch5 -p1 -b .paddng + +%build +%configure --libdir=%{_libexecdir} +make %{?_smp_mflags} + +%install +make install DESTDIR=%{buildroot} +mkdir -p -m 0750 %{buildroot}/%{_sysconfdir}/backup.d + +%files +%{!?_licensedir:%global license %doc} +%{_sbindir}/backupninja +%{_sbindir}/ninjahelper +%{_libexecdir}/backupninja +%doc AUTHORS ChangeLog FAQ.md NEWS README.md TODO +%license COPYING +%config(noreplace) %{_sysconfdir}/backupninja.conf +%config(noreplace) %{_sysconfdir}/cron.d/backupninja +%config(noreplace) %{_sysconfdir}/logrotate.d/backupninja +%dir %attr(0750,root,root )%{_sysconfdir}/backup.d +%{_datadir}/backupninja +%{_mandir}/man1/*.1* +%{_mandir}/man5/*.5* + +%changelog +* Tue Sep 7 2021 zhengyaohui - 1.1.0-1 +- package init