HashBackup set up: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| (21 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
* Create the user/group <code>hb</code> (329 is the [https://slackbuilds.org/uid_gid.txt UID/GID] of "oracle-xe" removed from [https://slackbuilds.org SBo]) | * Create the user/group <code>hb</code> (329 is the [https://slackbuilds.org/uid_gid.txt UID/GID] of "oracle-xe" removed from [https://slackbuilds.org SBo]) | ||
< | ::<code># groupadd -g 329 hb</code> | ||
groupadd -g 329 hb | ::<code># useradd -u 329 -g 329 -s /sbin/nologin -M hb</code> | ||
useradd -u 329 -g 329 -s /sbin/nologin -M hb | |||
</ | |||
* Download <code>hb</code> from https://www.hashbackup.com/hashbackup/download.html to <code>/usr/local/sbin/hb</code> | * Download <code>hb</code> from https://www.hashbackup.com/hashbackup/download.html to <code>/usr/local/sbin/hb</code> | ||
** <code># chown root:hb /usr/local/sbin/hb</code> | ** <code># chown root:hb /usr/local/sbin/hb</code> | ||
| Line 10: | Line 8: | ||
* <code># mkdir /var/hashbackup</code> | * <code># mkdir /var/hashbackup</code> | ||
** <code># chown hb:hb /var/hashbackup</code> | ** <code># chown hb:hb /var/hashbackup</code> | ||
** <code># | ** <code># chmod 700 /var/hashbackup</code> | ||
* <code>$ sudo -u hb /usr/local/sbin/hb init -c /var/hashbackup</code> | * <code>$ sudo -u hb /usr/local/sbin/hb init -c /var/hashbackup</code> | ||
* Create <code>/var/hashbackup/dest.conf</code> | * Create <code>/var/hashbackup/dest.conf</code> | ||
| Line 23: | Line 21: | ||
secure | secure | ||
</pre> | </pre> | ||
:* <code># chown hb:hb /var/hashbackup/dest.conf</code> | |||
:* <code># chmod 400 /var/hashbackup/dest.conf</code> | :* <code># chmod 400 /var/hashbackup/dest.conf</code> | ||
* Customize <code>/var/hashbackup/inex.conf</code> | |||
<pre> | |||
ex /home/user/.bash_history | |||
ex /home/user/.cache | |||
ex /home/user/.dvdcss | |||
ex /home/user/.ccache | |||
ex /home/user/.emacs.d | |||
ex /home/user/.fontconfig | |||
ex /home/user/.gvfs | |||
ex /home/user/.local/share/Trash | |||
ex /home/user/.local/share/bashrun*/history | |||
ex /home/user/.local/tmp | |||
ex /root/.bash_history | |||
ex /root/.cache | |||
ex /root/.ccache | |||
ex /root/.dvdcss | |||
ex /root/.emacs.d | |||
ex /root/.fontconfig | |||
ex /root/.gvfs | |||
ex /root/.local/share/Trash | |||
ex /root/.local/share/bashrun*/history | |||
ex /root/.local/tmp | |||
ex /var/tmp/ | |||
ex /var/cache | |||
ex /var/run | |||
ex /var/spool/cron/cron.* | |||
ex /var/lib/dhcpcd | |||
ex /usr/local/var/.hb-daily-marker | |||
ex /usr/local/mysqlbackups/backup.xb.gz | |||
... | |||
</pre> | |||
* Set configuration options: | |||
<pre> | |||
hb config cache-size-limit ...GB | |||
hb config dedup-mem ...GB | |||
hb config copy-executable True | |||
hb config no-backup-tag .nobackup,CACHEDIR.TAG | |||
hb config pack-age-days 0 | |||
hb config pack-download-limit 10TB | |||
hb config pack-percent-free 10 | |||
</pre> | |||
* <code>/etc/cron.daily/check-CACHEDIR.TAG</code> | |||
<pre> | |||
#!/bin/bash | |||
l=$(for f in $(locate -be '\CACHEDIR.TAG'); do echo z >> $f; head -n 1 "$f" \ | |||
| grep -v "^Signature: 8a477f597d28d172789f06886806bc55" \ | |||
> /dev/null && echo "$f"; done) | |||
if [[ $l ]]; then | |||
echo "CACHEDIR.TAG files without \ | |||
'Signature: 8a477f597d28d172789f06886806bc55':" | |||
echo | |||
echo "$l" | |||
fi | |||
</pre> | |||
* <code>/etc/cron.daily/hb-marker</code> | |||
<pre> | |||
#!/bin/bash | |||
/bin/touch /usr/local/var/.hb-daily-marker | |||
</pre> | |||
* <code>/etc/profile.d/hb.sh</code> | |||
<pre> | |||
HASHBACKUP_DIR=/var/hashbackup | |||
export HASHBACKUP_DIR | |||
</pre> | |||
* <code>/usr/local/sbin/hb-backup.sh</code>, to be added to cron | |||
<pre> | |||
#!/bin/bash | |||
export HASHBACKUP_DIR=/var/hashbackup | |||
set -e -o pipefail | |||
hb=/usr/local/sbin/hb | |||
marker=/usr/local/var/.hb-daily-marker | |||
if [ -f $marker ]; then | |||
n=$($hb upgrade 2>&1 >/dev/null) | |||
if [[ $n ]]; then | |||
echo "$n" | /usr/bin/mail -s "$(echo "$n" | tail -n 1)" user@example.org | |||
chown root:hb $hb | |||
chmod 750 $hb | |||
setcap cap_dac_read_search=+ep $hb | |||
fi | |||
fi | |||
hb="sudo -u hb /usr/local/sbin/hb" | |||
$hb backup /boot /etc /home /root /srv /usr/local /var | |||
$hb retain -t 10d -s safe -x 3m | |||
$hb retain -x 2d /usr/local/mysqlbackups | |||
if [ -f $marker ]; then | |||
$hb tune | |||
$hb selftest | |||
$hb dest verify | |||
rm $marker | |||
fi | |||
</pre> | |||
:* <code># chmod 700 /usr/local/sbin/hb-backup.sh</code> | |||
* <code>/home/user/.bash_aliases</code> | |||
<pre> | |||
alias hb='sudo -u hb /usr/local/sbin/hb' | |||
</pre> | |||
or <code>/root/.bash_aliases</code> | |||
<pre> | |||
alias hb='sudo -u hb /usr/local/sbin/hb' | |||
alias root-hb='/usr/local/sbin/hb' | |||
</pre> | |||
[[Category: Linux]] | [[Category: Linux]] | ||
Latest revision as of 20:42, 20 April 2023
# groupadd -g 329 hb# useradd -u 329 -g 329 -s /sbin/nologin -M hb
- Download
hbfrom https://www.hashbackup.com/hashbackup/download.html to/usr/local/sbin/hb# chown root:hb /usr/local/sbin/hb# chmod 750 /usr/local/sbin/hb# setcap cap_dac_read_search=+ep /usr/local/sbin/hb
# mkdir /var/hashbackup# chown hb:hb /var/hashbackup# chmod 700 /var/hashbackup
$ sudo -u hb /usr/local/sbin/hb init -c /var/hashbackup- Create
/var/hashbackup/dest.conf
destname slack type s3 host example.com accesskey ... secretkey ... bucket hb-slack class ia secure
# chown hb:hb /var/hashbackup/dest.conf# chmod 400 /var/hashbackup/dest.conf
- Customize
/var/hashbackup/inex.conf
ex /home/user/.bash_history ex /home/user/.cache ex /home/user/.dvdcss ex /home/user/.ccache ex /home/user/.emacs.d ex /home/user/.fontconfig ex /home/user/.gvfs ex /home/user/.local/share/Trash ex /home/user/.local/share/bashrun*/history ex /home/user/.local/tmp ex /root/.bash_history ex /root/.cache ex /root/.ccache ex /root/.dvdcss ex /root/.emacs.d ex /root/.fontconfig ex /root/.gvfs ex /root/.local/share/Trash ex /root/.local/share/bashrun*/history ex /root/.local/tmp ex /var/tmp/ ex /var/cache ex /var/run ex /var/spool/cron/cron.* ex /var/lib/dhcpcd ex /usr/local/var/.hb-daily-marker ex /usr/local/mysqlbackups/backup.xb.gz ...
- Set configuration options:
hb config cache-size-limit ...GB hb config dedup-mem ...GB hb config copy-executable True hb config no-backup-tag .nobackup,CACHEDIR.TAG hb config pack-age-days 0 hb config pack-download-limit 10TB hb config pack-percent-free 10
/etc/cron.daily/check-CACHEDIR.TAG
#!/bin/bash l=$(for f in $(locate -be '\CACHEDIR.TAG'); do echo z >> $f; head -n 1 "$f" \ | grep -v "^Signature: 8a477f597d28d172789f06886806bc55" \ > /dev/null && echo "$f"; done) if [[ $l ]]; then echo "CACHEDIR.TAG files without \ 'Signature: 8a477f597d28d172789f06886806bc55':" echo echo "$l" fi
/etc/cron.daily/hb-marker
#!/bin/bash /bin/touch /usr/local/var/.hb-daily-marker
/etc/profile.d/hb.sh
HASHBACKUP_DIR=/var/hashbackup export HASHBACKUP_DIR
/usr/local/sbin/hb-backup.sh, to be added to cron
#!/bin/bash
export HASHBACKUP_DIR=/var/hashbackup
set -e -o pipefail
hb=/usr/local/sbin/hb
marker=/usr/local/var/.hb-daily-marker
if [ -f $marker ]; then
n=$($hb upgrade 2>&1 >/dev/null)
if [[ $n ]]; then
echo "$n" | /usr/bin/mail -s "$(echo "$n" | tail -n 1)" user@example.org
chown root:hb $hb
chmod 750 $hb
setcap cap_dac_read_search=+ep $hb
fi
fi
hb="sudo -u hb /usr/local/sbin/hb"
$hb backup /boot /etc /home /root /srv /usr/local /var
$hb retain -t 10d -s safe -x 3m
$hb retain -x 2d /usr/local/mysqlbackups
if [ -f $marker ]; then
$hb tune
$hb selftest
$hb dest verify
rm $marker
fi
# chmod 700 /usr/local/sbin/hb-backup.sh
/home/user/.bash_aliases
alias hb='sudo -u hb /usr/local/sbin/hb'
or /root/.bash_aliases
alias hb='sudo -u hb /usr/local/sbin/hb' alias root-hb='/usr/local/sbin/hb'