Вы спрашивали, происходит ли «файл файлов зданий ...» в памяти или где-то хранится. Давайте посмотрим на rsync's sources, а именно, flist.c
:
2089 rprintf(FLOG, "building file list\n");
2090 if (show_filelist_p())
2091 start_filelist_progress("building file list");
2092 else if (inc_recurse && INFO_GTE(FLIST, 1) && !am_server)
2093 rprintf(FCLIENT, "sending incremental file list\n");
2094
2095 start_write = stats.total_written;
2096 gettimeofday(&start_tv, NULL);
2097
2098 if (relative_paths && protocol_version >= 30)
2099 implied_dirs = 1; /* We send flagged implied dirs */
2100
2101 #ifdef SUPPORT_HARD_LINKS
2102 if (preserve_hard_links && protocol_version >= 30 && !cur_flist)
2103 init_hard_links();
2104 #endif
2105
2106 flist = cur_flist = flist_new(0, "send_file_list");
2107 if (inc_recurse) {
2108 dir_flist = flist_new(FLIST_TEMP, "send_file_list");
2109 flags |= FLAG_DIVERT_DIRS;
2110 } else
2111 dir_flist = cur_flist;
flist_new
просто выделяет новый список файлов бассейн, ничего не делая. Параметр string содержит информацию об ошибках вне памяти.
Затем существует несколько сотен строк, целью которых является отправка списка файлов. Нет никаких вызовов rprintf
, кроме возможных сообщений об ошибках. Наиболее интересными вызовами функции в этом цикле являются вызовы send_file_name
, но они также не звонят rprintf
.
Так Да, он строит файлы в памяти, и вы не можете зарегистрировать его, не исправляя источники самостоятельно. Кроме того, не все в rsync записывается в файл журнала, некоторые сообщения печатаются непосредственно на вашем экране. На самом деле вам может быть лучше использовать простое перенаправление оболочки, в зависимости от ваших параметров выполнения. (Или используйте tee
для одновременного вывода вывода на печать в файл и вашу станду.)