Yabsm has been deprecated in favor of btrbk for the time being. Important architectural mistakes were made that I don't currently have the time to fix. Yabsm still works great and is useful, but I cannot in good conscience package it for Linux distros until I fix these mistakes.
Yabsm's user manual can be found on CPAN here.
I also wrote an article about how I personally use Yabsm here.
Yabsm is officially supported on Arch, and Slackware (more distributions coming soon).
Available on the AUR as yabsm. After creating a configuration, start and enable the yabsmd service:
# systemctl start yabsmd
# systemctl enable yabsmd
Available on SlackBuilds.org as system/yabsm (be sure to read its README).
Don't hesitate to open an issue.
If Yabsm is not packaged for your Linux distribution I would really appreciate it if you packaged it (and let me know you packaged it).
- Bash completion, specifically for the
find
command - On-demand snapshots/backups
- Perl >= 5.34.0
- btrfs-progs
- OpenSSH
- sudo
- which
Yabsm runs as a cron-style daemon that is meant to be started at boot time. An example sysvinit-style init script is provided in /examples/rc.yabsmd
, and an example systemd service is provided in /examples/yabsmd.service
.
Yabsm is distributed as an App::FatPacker packed script. This allows Yabsm to be implemented in a single executable, with all of its CPAN dependencies packed into this file. For all packaging purposes Yabsm has zero CPAN dependencies. The test suite however depends on Test::Exception, so it will be needed if you want to run the test suite at install time (which should not be necessary).
An example configuration is provided in /examples/yabsm.conf.example
. This example configuration should be installed to /etc/yabsm.conf.example
.
Yabsm uses semantic versioning. The MAJOR version is upgraded if we make any change that breaks backwards compatibility. The MINOR version is upgraded if functionality is added that does not break backwards compatibility. The PATCH version is upgraded if there is a bug fix, or an upgrade is made to one of the fatpacked CPAN dependencies.
- Make sure the
$VERSION
variable is correct in/lib/App/Yabsm.pm
- Make sure that /cpanfile lists all the dependencies (with specific versions) that need to be fatpacked
- Install all modules listed in
/cpanfile
:$ cpanm --installdeps .
- Run the test suite and make sure all tests pass
- Pack
bin/yabsm-unpacked
with App::FatPacker:$ fatpack pack bin/yabsm-unpacked > bin/yabsm
- Make the dist:
$ perl Makefile.PL; make; make test; make dist
- Examine the dist to make sure everything is as expected
- Make sure
/Changes
lists all relevant changes since the previous version and denotes todays date for the version to be released - Check everything one last time. Specifically, make sure all the CPAN deps (with correct version) have been fatpacked into
bin/yabsm
. - Upload to CPAN:
$ cpan-upload -u $PAUSE_USERNAME App-Yabsm-$VERSION.tar.gz
- Update this documents link to the official manual so it points to the new version.
Copyright (C) 2022-2023 by Nicholas Hubbard nicholashubbard@posteo.net
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with App-Yabsm. If not, see http://www.gnu.org/licenses/.