rsync helper with presets
Go to file
2022-03-11 21:10:34 +01:00
LICENSE Initial commit 2022-03-11 21:07:38 +01:00
msynk.1 Initial commit 2022-03-11 21:07:56 +01:00
msynk.sh Initial commit 2022-03-11 21:07:56 +01:00
PKGBUILD Initial commit 2022-03-11 21:07:56 +01:00
README.md Initial commit 2022-03-11 21:07:56 +01:00

% MSYNK(1) msynk 1.0 % Matthias Quintern % March 2022

NAME

msynk - sync files locally or between devices

SYNOPSIS

| Local: | msynk [OPTION...] -r DEST_DIR -s SOURCE_DIR PATHS...

| Via remote shell: | Push: | msynk [OPTION...] -r [USER@]HOST:DEST_DIR -s SOURCE_DIR PATHS... | Pull: | msynk [OPTION...] -r DEST_DIR -s [USER@]HOST:SOURCE_DIR PATHS...

| Using a configuration file: | msynk [OPTION...] -c CONFIG NAME [SELECTIONS...]

DESCRIPTION

msynk uses rsync to synchronise files or directories locally or between devices. In general, you should always add a trailing '/' to directories.

Encryption

Files can also be encrypted or decrypted using mkrypt. If encryption is used, the files are encrypted to a temporary directory and then synced with rsync. If you sync encrypted files to your system, the encrypted files are transferred with rsync to a temporary directory and then decrypted to your filesystem.

Configuration Files

msynk can read from config files usually stored in ~/.config/msynk. The config files are shellscripts run with bash to set certain environent variables. These are:\

  • paths: array containing all paths (relative to sender) that should be synced\
  • sender: the parent directory of the paths\
  • receiver: the path where the files should be synced to\
  • rsync_flags: array containing all the flags for rsync. If you just want to add a flag, use ´rsync_flags+=(-yourflag)\
  • use_encryption: 0 for no, 1 for yes

Example

To sync the directories "/home/user/foo" "/home/user/bar" and the file "/home/user/file.txt" to a remote server "user@foobar.com:~/backup" which is available with ssh at port 42, you could have a configuration file "my_backup":
sender=/home/user/
receiver=user@foobar.com:~/backup/
paths=(foo/ bar/ file.txt)
rsync_flags+=(--rsh="ssh -p 42")
You can then run this with: "msynk -c my_backup", or if you only want to sync the "foo" directory and ".txt" files: "msynk -c my_backup foo .txt"

OPTIONS

-h, --help
Show a list of arguments.
--settings
Show the current settings.
-c, --config config-name
Retrieve settings from config file ~/.config/msynk/config-name
-s, --sender path
Set sender to directory. This can also be a remote, like user@domain.com:/dir. Defaults to to the current working directory.
-r, --receiver path
Set the receiver directory. All files and directories will be placed inside this directory. This can also be a remote, like user@domain.com:/dir. This option always needs to be set.
--reverse
Swaps sender and receiver. Useful when you want to reverse a config file.
--encrypt
Encrypt files with mkrypt before sending them to the receiver.
The files are encrypted to $TMP_DIR and then synced to the receiver. Does not work with --delete.
--decrypt
Decrypt files with mkrypt after receiving them from the sender. Assumes that all files are encrypted and fails if that is not the case.
The files are synced to $TMP_DIR and then decrypted to the receiver directory. Does not work with --delete.
--mkrypt-flags flags
Additional flags for mkrypt. You can use this to set the key for the encryption.
-d, --delete
rsync --delete option. Deletes all files on the receiver that do not exist on the sender. msynk will open less with a list of all files that will be deleted and prompt you wether you want continue (unless --skip-dryrun is set)
--skip-dryrun
Can be used with --delete. This skips listing the files that will be deleted and the prompt.
--rsync-flags flags
Additional flags for rsync. You can use this to set the port for the connection.
-v, --verbose
Increase verbosity: Passes -v to rsync and mkrypt.
--silent
Decrease verbosity: Print only error messages and passes --silent to mkrypt.
--debug
Maximum verbosity: -v but also print out rsync and mkrypt commands.
positional arguments
If you are using a config file: pos. args. are strings that have to be contained in a path in order for it to be synced. If no pos. args. are given, all files are synced.
If you are not using a config file: pos. args. are filepaths relative to the sender directory.

COPYRIGHT

Alles meins!!!