Automate execution of various rsync commands based on profiles defined on a YAML configuration file
Project description
Auto rsync
Command to automate execution of various rsync commands based on profiles defined on a YAML configuration file.
-
Instead of doing:
rsync -avySH --delete --backup --backup-dir=../deleted/$timestamp/ "/media/Media/Photos" "user@host.com:/media/backup/filesets/$hostname.photos"
Just do:
autorsync -p photos
-
Instead of doing:
rsync -avySH --delete --backup --backup-dir=../deleted/$timestamp/ "/media/Media/Photos" "user@host.com:/media/backup/filesets/$hostname.photos" rsync -avySH --delete --backup --backup-dir=../deleted/$timestamp/ "/media/Media/Books" "user@host.com:/media/backup/filesets/$hostname.books" rsync -avySH --delete --backup --backup-dir=../deleted/$timestamp/ "/media/Media/Music" "user@host.com:/media/backup/filesets/$hostname.music"
Just do:
autorsync
Or, in more general terms, instead of doing long rsync commands for your
everyday backups, or putting them in adhoc scripts, write the clear
~/autorsync.yaml
file and let autorsync
to the work for you.
Installation
pip3 install auto-remote-sync --user
(Sorry for the long package name, ideally this would be simply autorsync,
but name autosync
was already taken and PyPi would not allow similar names)
Usage
Organize Profiles in ~/autorsync.yaml
Here is an example with some defaults and a few profiles:
DEFAULTS:
source_part1: '{{home}}/Media'
target_part1: user@remote.host.com:/media/backup/filesets
delete: True
backup: True
backup_dir: ../deleted/{{time.strftime('%Y.%m.%d-%H.%M.%S')}}/
background: False
profiles:
- name: books
source_part2: Books/
target_part2: '{{hostname}}.books/files'
background: True
- name: nextcloud.data
source: /var/lib/nextcloud/data
target_part2: '{{hostname}}.nextcloud_files'
Notes about this configuration
- All profiles inherit parameters from
DEFAULTS
. If parameter isn’t set in the profile, the value defined inDEFAULTS
will be used. - For each profile, the Source is defined by
source
parameter, or, if not defined, bysource_part1/source_part2
- Target follows same logic:
target
ortarget_part1/target_part2
delete
makes rsync delete files in target that are absent in sourcebackup
andbackup_dir
makes rsync save backups on target of deleted or modified files on source. Value onbackup_dir
is a path relative to target folder- You can use Jinja logic in path parts, surrounded by
{{}}
. Currently these are the available variables:time
, a Pythondatetime.datetime
object which includes local timezonehostname
, such as “rocket”username
, UNIX user name as “joanbaez”home
, user’s home folder as “/home/joanbaez”userid
, user ID as “504”gecos
, user long name as “Joan Baez”
Example usage
-
Show all profiles:
autorsync -l
-
Run rsync for all profiles:
autorsync
-
Run rsync only for profile
books
autorsync -p books
-
Simulate rsync only for profile
books
(force rsync’s--dry-run
)autorsync -n -p books
or
autorsync --dry-run -p books
-
Run rsync for 2 profiles from a non-default configuration file:
autorsync -c /etc/autorsync.yaml -p "books, photos"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for auto_remote_sync-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce203b0b91204935d222091bbdbfe3a965672a55c102997212bdae98f4fe9aca |
|
MD5 | e4d09ecc85e323e009e92a5f578b7029 |
|
BLAKE2b-256 | 7e983b715230a2d98be3f5bb2ec7600f40905901a4dfbd603bb54ca120ffabdd |