**msynk** - rsync helper that supports encryption and presets # 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": ```bash 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. Note that this directory must already exist if it is on a remote. **--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. **--date** : Can be used with -c and --encrypt or --decrypt: When running **msynk** with a config, the current date is stored in the config file. : When running with --date, only files that have been modified after the date stored in the config file are processed (by passing--date [date the config was last run] to *mkrypt*). **--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 Copyright © 2022 Matthias Quintern. License GPLv3+: GNU GPL version 3 .\ This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.