100 lines
4.2 KiB
Markdown
100 lines
4.2 KiB
Markdown
% 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!!!
|