[Home](https://kellyjonbrazil.github.io/jc/) # jc.parsers.rsync jc - JSON Convert `rsync` command output parser Supports the `-i` or `--itemize-changes` options with all levels of verbosity. This parser will process the `STDOUT` output or a log file generated with the `--log-file` option. Usage (cli): $ rsync -i -a source/ dest | jc --rsync or $ jc rsync -i -a source/ dest or $ cat rsync-backup.log | jc --rsync Usage (module): import jc result = jc.parse('rsync', rsync_command_output) Schema: [ { "summary": { "date": string, "time": string, "process": integer, "sent": integer, "received": integer, "total_size": integer, "matches": integer, "hash_hits": integer, "false_alarms": integer, "data": integer, "bytes_sec": float, "speedup": float }, "files": [ { "filename": string, "date": string, "time": string, "process": integer, "metadata": string, "update_type": string/null, # [0] "file_type": string/null, # [1] "checksum_or_value_different": bool/null, "size_different": bool/null, "modification_time_different": bool/null, "permissions_different": bool/null, "owner_different": bool/null, "group_different": bool/null, "acl_different": bool/null, "extended_attribute_different": bool/null, "epoch": integer, # [2] } ] } ] [0] 'file sent', 'file received', 'local change or creation', 'hard link', 'not updated', 'message' [1] 'file', 'directory', 'symlink', 'device', 'special file' [2] naive timestamp if time and date fields exist and can be converted. Examples: $ rsync -i -a source/ dest | jc --rsync -p [ { "summary": { "sent": 1708, "received": 8209, "bytes_sec": 19834.0, "total_size": 235, "speedup": 0.02 }, "files": [ { "filename": "./", "metadata": ".d..t......", "update_type": "not updated", "file_type": "directory", "checksum_or_value_different": false, "size_different": false, "modification_time_different": true, "permissions_different": false, "owner_different": false, "group_different": false, "acl_different": false, "extended_attribute_different": false }, ... ] } ] $ rsync | jc --rsync -p -r [ { "summary": { "sent": "1,708", "received": "8,209", "bytes_sec": "19,834.00", "total_size": "235", "speedup": "0.02" }, "files": [ { "filename": "./", "metadata": ".d..t......", "update_type": "not updated", "file_type": "directory", "checksum_or_value_different": false, "size_different": false, "modification_time_different": true, "permissions_different": false, "owner_different": false, "group_different": false, "acl_different": false, "extended_attribute_different": false }, ... ] } ] ### parse ```python def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] ``` Main text parsing function Parameters: data: (string) text data to parse raw: (boolean) unprocessed output if True quiet: (boolean) suppress warning messages if True Returns: List of Dictionaries. Raw or processed structured data. ### Parser Information Compatibility: linux, darwin, freebsd Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)