Это упоминалось в презентации Леннарта Поттеринга в 2013 г., но в 2015 г. его цитировали следующим образом:
systemd also contains the systemd-nspawn container manager. It's a relatively minimal, yet powerful implementation of a container manager. Initially we wrote it for testing purposes, but nowadays we consider it ready for many production uses. In fact CoreOS' rkt container tool makes use of it as the lower level container backend.
Ссылка:Где встречаются systemd и Containers :Вопросы и ответы с Леннартом Поттерингом
rsync
использует сжатие вtoken.c
и, по-видимому, только там. Он поддерживает состояние потока deflate в переменной tx_strm
и сбрасывает состояние потока в send_deflated_token
, если предыдущий токен равен -1 :
if (last_token == -1) {
/* initialization */
if (!init_done) {
tx_strm.next_in = NULL;
tx_strm.zalloc = NULL;
tx_strm.zfree = NULL;
if (deflateInit2(&tx_strm, compression_level,
Z_DEFLATED, -15, 8,
Z_DEFAULT_STRATEGY) != Z_OK) {
rprintf(FERROR, "compression init failed\n");
exit_cleanup(RERR_PROTOCOL);
}
if ((obuf = new_array(char, OBUF_SIZE)) == NULL)
out_of_memory("send_deflated_token");
init_done = 1;
} else
deflateReset(&tx_strm);
Используется от match.c
, через функцию match
, используемую функциями hash_search
и match_sums
. Эти функции всегда гарантируют, что они завершат свою обработку вызовом, который оставляет last_token
установленным в -1, так что следующий вызов сбросит поток выкачивания. Все это делается файл -за файлом -, поэтому поток дефляции всегда сбрасывается в начале каждого файла.
Это означает, что словарь блочного сжатия гарантированно сбрасывается для каждого файла; он может сбрасываться чаще.
Если бы rsync
использовал данные из предыдущих файлов, было бы интереснее распространить обработку хэшей на файлы.
Вы можете проверить все это экспериментально, синхронизировав несколько копий сжимаемых файлов, как вы предлагаете; статистика всегда показывает, что переданный размер равен сжатому размеру одного файла, умноженному на количество копий, поэтому нет -дублирования того или иного вида между файлами.