Yet Another Tiny Backup
General information
Backup tool for one of my production instances. It implements very simple logic for my special requirements.
Algorithm:
yatbackup can compress whole folder using
specified archiver. In case, when another backup with same hash
available in destination folder, new archive will be deleted.
Yes, it's all.
Why do I need it? I need create backup of some folder using
cron, but I don't need duplicate archives.
Also, I need to understand that utility successfully finished, even no new archives was created.
Source code and documentation available here: https://github.com/JFF-Bohdan/yatbackup
How to use it
First of all, you need to create configuration file which describes your requirements. Then you can call
yatbackup using this command line:yatbackup.py --config /etc/yatbackup/conf.conf
In this case we running
yatbackup with configuration in file /etc/yatbackup/conf.confConfiguration files
General information
yatbackup behaviour can be controlled using configuration files. Examples can be found in /examples folder of repository.
main section
All configuration files must contain main section[main]
target=s:/AmSystem/tapvisor
destination=s:/dest
exclude=tmp,sendfile_download,dev,log,nmon,.git,.idea,uploads
exclude_recursive=__pycache__
exclude_prefix=tapvisor/
compressor=7z
add_hash_file=True
hash_algo_for_file=sha256
In this case, we want to backup
s:/AmSystem/tapvisor folder into s:/dest folder using 7z archiver. Also, we want ignore folder/file with name __pycache__ in all directories (recursivelly). In root folder we want ignore all these folders:- tmp
- sendfile_download
- dev
- log
- nmon
- .git
- .idea
- uploads
compressors section
Configuration files can have section with pathes of all known archivers.
Example:
[compressors]
7z=c:/Program Files/7-Zip/7z.exe
tar=c:/Program Files (x86)/Git/bin/tar.exe
bzip2=c:/Program Files (x86)/Git/bin/bzip2.exe
When path specified this path will be used when archiver specified in
[main]compressorOutput example
For example, in case when we have configuration as listed below, when we call
yatbackup calling:> d:\Python35\python.exe yatbackup.py --config .\examples\tapvisor.conf
We will get files
tapvisor-20170411T183716.7z and tapvisor-20170411T183716.sha256 in s:\dest\ folder.
Next, we call our command again and will get
tapvisor-20170411T183742.skip which demostrates that yatbackup successfully executed and no backups created.
Next, we will call our command again and again receiving new
.skip file without new archives created. Old .skip files will be automatically deleted. So, using .skip files we can understand that yatbackup was called and successfully finished all operations, but no new archive was created.
New archive will be created only if target folder content will be cnahged.
Usage example
In my case I preffer use
yatbackup via cron. To edit system cron file you shall call:
$ sudo crontab -e
And add something like this:
0 3 * * * /home/bohdan/yatbackup/yatbackup.py --config /home/bohdan/yatbackupconfig/tapvisor.conf&
In this case every night at 3 AM
yatbackup will be executed using config in /home/bohdan/yatbackupconfig/tapvisor.conf
If you want to play with
cron rules you can use this Online Cron Rules Editor
Enjoy!

No comments:
Post a Comment