Rsync has command line arguments for compression:
-z, --compress compress file data during the transfer --compress-level=NUM explicitly set compression level
--compress-level mean? Which numbers can be used as level?
Server Fault is a question and answer site for system and network administrators. It only takes a minute to sign up.Sign up to join this community
It's values between 0-9. Where
1 is fastest and
9 is the most compressed.
Other than that there's correlation between rsync and zlib where
rsync tells the zlib library to "use the default compression". In zlib's docs, it says this:
Z_DEFAULT_COMPRESSIONrequests a default compromise between speed and compression (currently equivalent to level 6).
rsync since version 3.2.0 supports more than zlib:
--compress, -z turn on compression --compress-choice=STR, --zc=STR choose compression from lz4 (fastest), zstd, zlibx, zlib (slowest), none --compress-level=NUM, --lz=NUM zlib and zstd can be tuned with compression level zlib from 1 (lowest) to 9 (highest), default 6 zstd from -131072 to 22, default 3
Note that the local
rsync documentation covers the information about
To find it:
--compress-level=NUM Explicitly set the compression level to use (see --compress) in‐ stead of letting it default. Allowed values for NUM are between 0 and 9; default when --compress option is specified is 6. If NUM is non-zero, the --compress option is implied.
Having said that, I admit it's not very explanatory about the actual behavior of
NUM... but bigger
NUM means more compression. So:
That enables maximum compression (so, maximum CPU usage).
Note: very high compression levels are useful for very limited connection bandwidth. On high-speed networks, this compression just slow down everything, since your CPU is busy in compressing instead of just copying.
The environment used was composed by two docker containers used with MACVLAN + some noise traffic (which gives around ±1% error) The fileX - in my case - is a binary one
So, below are the result of rsync tarred files versus rsync with compression (option -z) untarred files
1. File tarred + rsync without compression (rsync -axvPAH fileX.tar destination:/path) File size is 56933 bits (fileX.tar) Transfer difference is 4735665-4673346=62319 bits 2. File tarred + rsync with default compression (rsync -axvPAH -z fileX destination:/path) File size is 56933 (fileX.tar) Transfer difference is 4933845-4871608=62237 3. File tarred + rsync with maximum compression (rsync -axvPAH -z --compress-level=9 fileX.tar destination:/path) File size is 56933 bits (fileX.tar) Transfer difference is 4870664-4808387=62277 4. File untarred + rsync with default compression (rsync -axvPAH -z fileX destination:/path) File size is 237525 bits (fileX) Transfer difference is 4669946-4607637=62309 bits 5. File untarred + rsync with maximum compression (rsync -axvPAH -z --compress-level=9 fileX destination:/path) File size is 237525 bits (fileX) Transfer difference is 4806735-4744764=61971 bits 6. File untarred + rsync without compression (makes no sense since it’s the most bandwidth consuming one)