使用“rsync”和“btrfs”快照备份
snapshotbackup的Python项目详细描述
什么
使用rsync
在btrfs
文件系统上执行增量备份。
已完成的备份保留为只读快照。
用法
安装
pip install snapshotbackup pip install snapshotbackup[ci] # install ci related dependencies pip install snapshotbackup[dev] # install dev dependencies pip install snapshotbackup[journald] # enable logging to journald with `--silent`
示例config.ini
[DEFAULT]; retain_all = '1 day'; retain_daily = '1 month'; decay = '1 year'[data1]source=/path/to/data1backups=/backups/data1[data2]source=/path/to/data2backups=/backups/data2ignore=/.cacheretain_all='1 week'; '1', 'true' or 'True' for `True`, everything else is `False`autodecay=1autoprune=truenotify_remote=user@host
操作
<> P>如果配置的备份目录已经存在,则可以跳过安装步骤。snapshotbackup setup data1 snapshotbackup backup data1 snapshotbackup list data1 snapshotbackup prune data1 snapshotbackup decay data1
保留政策
prune
将保留:
- 所有备份不早于
retain_all
- 每日备份不早于
retain_daily
- 永久每周备份(请参见
decay
) - 始终保留最新的备份
decay
删除所有早于配置的备份decay
。
通知
当通过cron或使用notify_remote
运行时,可能需要添加
DBUS_SESSION_BUS_ADDRESS
到执行环境,例如。
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus snapshotbackup backup data1
自动化
使用高级安装方法和cron
时,请确保PATH
正确设置,F.E.
PATH=/usr/local/bin:/bin:/usr/bin:/home/foo/.local/bin
01 * * * * DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus snapshotbackup backup home -s
要允许非交互式删除,请配置sudo
以允许用户“foo”
使用一些不带密码的btrfs命令。
foo ALL=(ALL) NOPASSWD: /usr/bin/btrfs subvolume list * foo ALL=(ALL) NOPASSWD: /usr/bin/btrfs subvolume delete *
开发环境
virtualenv .env -p python3 . .env/bin/activate pip install -r requirements.txt pip install -e . # or pip install -e .[journald]
演示
如果手头没有btrfs
文件系统,请签出演示文件夹。
它创建一个btrfs
映像文件,并将其作为环回设备装载。
disclaimer:我不确定btrfs环回文件在每个环境中是否安全。使用风险自负。
make -f makefile.demo setup make -f makefile.demo backup make -f makefile.demo list make -f makefile.demo prune make -f makefile.demo decay make -f makefile.demo clean
请阅读makefile.demo
和demo/config.ini
来了解发生了什么。
构建
./setup.py bdist_wheel
仅此而已
文件不够?嗯,呃..,目标受众是开发人员。 这就是你的爱好项目;-)