rsync - что означает f +++++++++ в журналах rsync?

Я делаю rsync для резервного копирования файлов моего сервера, и у меня есть два вопроса:

1 - В середине процесса мне нужно остановить и снова запустить rsync, я хотел бы знать, начнется ли rsync в той же точке, где он остановился, или перезапустит синхронизацию?

2 - В файлах журнала эта строка отображается во всех файлах "f +++++++++", я хотел бы знать, что это значит?

, например:

010/12/21 08:28:37 [4537] >f.st...... iddd/logs/website-production-access_log
2010/12/21 08:29:11 [4537] >f.st...... iddd/web/website/production/shared/log/production.log
2010/12/21 08:29:14 [4537] .d..t...... iddd/web/website/production/shared/sessions/
2010/12/21 08:29:14 [4537] >f+++++++++ iddd/web/website/production/shared/sessions/ruby_sess.017a771cc19b18cd
2010/12/21 08:29:14 [4537] >f+++++++++ iddd/web/website/production/shared/sessions/ruby_sess.01eade9d317ca79a

Спасибо.

79 голосов | спросил GodFather 20 MonEurope/Moscow2010-12-20T23:19:42+03:00Europe/Moscow12bEurope/MoscowMon, 20 Dec 2010 23:19:42 +0300 2010, 23:19:42

4 ответа


0

Давайте посмотрим, как работает rsync, и лучше разберем загадочные строки результата:

1 - Огромное преимущество rsync состоит в том, что после следующего прерывания оно продолжается гладко.

Следующий вызов rsync больше не будет передавать файлы, которые он уже передал, если они не были изменены за это время. Но он начнет проверять все файлы с самого начала, чтобы выяснить это, поскольку не знает, что оно было прервано.

2 - каждый символ - это код, который можно перевести, если прочитать раздел -i, --itemize-changes в man rsync

Расшифровка вашего файла журнала примера из вопроса:

> f.st ......

> - the item is received
f - it is a regular file
s - the file size is different
t - the time stamp is different

.d..t ......

. - the item is not being updated (though it might have attributes 
    that are being modified)
d - it is a directory
t - the time stamp is different

> F +++++++++

> - the item is received
f - a regular file
+++++++++ - this is a newly created item

Соответствующая часть справочной страницы rsync:

-i, --itemize-changes

Запрашивает простой подробный список изменений, которые вносятся в каждый файл, включая изменения атрибутов. Это точно так же, как указание --out-format = '% i% n% L'. Если вы повторите эту опцию, то также будут выведены неизмененные файлы, но только если принимающий rsync имеет версию не ниже 2.6.7 (вы можете использовать -vv с более старыми версиями rsync, но это также включает вывод других подробных сообщений. мудрецы).

Выход "% i" имеет загадочный вывод длиной 11 букв. Общий формат подобен строке YXcstpoguax, где Y заменяется типом выполняемого обновления, X заменяется типом файла, а другие буквы представляют атрибуты, которые могут выводиться, если они изменяются.

Типы обновлений, которые заменяют Y, следующие:

  • A < означает, что файл передается на удаленный хост (отправлено).
  • A > означает, что файл передается на локальный хост (получен).
  • A c означает, что для элемента происходит локальное изменение /создание (например, создание каталога или изменение символическая ссылка и т. д.).
  • A h означает, что элемент является жесткой ссылкой на другой элемент (требуется --hard-links).
  • A . означает, что элемент не обновляется (хотя он может иметь изменяемые атрибуты).
  • A * означает, что остальная часть области подробного вывода содержит сообщение (например, «удаление»).

Типы файлов, которые заменяют X: f для файла, a d для каталога, L для символической ссылки, D для устройства и S для специального файла (например, именованные сокеты и fifos).

Другие буквы в приведенной выше строке являются фактическими буквами, которые будут выводиться, если обновляется связанный атрибут для элемента или "." без изменений. Вот три исключения: (1) вновь созданный элемент заменяет каждую букву на «+», (2) идентичный элемент заменяет точки пробелами, и (3) неизвестный атрибут заменяет каждую букву на «?» (это может произойти при разговоре с более старым rsync).

Атрибут, связанный с каждой буквой, следующий:

  • A c означает, что обычный файл имеет другую контрольную сумму (требуется --checksum) или что символическая ссылка, устройство или специальный файл имеет измененное значение. Обратите внимание, что если вы отправляете файлы на rsync до версии 3.0.1, этот флаг изменения будет присутствовать только для обычных файлов, отличающихся по контрольной сумме.
  • A s означает, что размер обычного файла отличается и будет обновляться при передаче файла.
  • A t означает, что время модификации отличается и обновляется до значения отправителя (требуется --times). Альтернативное значение T означает, что время модификации будет установлено навремя передачи, которое происходит, когда файл /символическая ссылка /устройство обновляется без --times, и когда символическая ссылка изменяется, и получатель не может установить свое время. (Примечание: при использовании клиента rsync 3.0.0 вы можете увидеть флаг s в сочетании с t вместо правильного флага T для этого сбоя установки времени.)
  • A p означает, что разрешения отличаются и обновляются до значения отправителя (требуется --perms).
  • o означает, что владелец отличается и обновляется до значения отправителя (требуются привилегии --owner и суперпользователя) .
  • A g означает, что группа отличается и обновляется до значения отправителя (требуется --group и полномочия для установки группа).
  • Слот u зарезервирован для будущего использования.
  • a означает, что информация ACL изменилась.
  • x означает, что информация расширенного атрибута изменилась.

Возможен еще один вывод: при удалении файлов «% i» будет выводить строку «* delete» для каждого удаляемого элемента (при условии, что вы говорите с достаточно недавним rsync, что он регистрирует удаления вместо вывод их в виде подробного сообщения).

ответил mit 20 PM00000030000005131 2012, 15:53:51
0

Некоторое время назад мне нужно было понять вывод rsync для сценария, который я писал. В процессе написания этого скрипта я гуглил и пришел к тому, что @mit написал выше . Я использовал эту информацию, а также документацию из других источников, чтобы создать свой собственный учебник по битовым флагам и как получить rsync для вывода битовые флаги для всех действий (по умолчанию это не выполняется).

Я публикую эту информацию здесь в надежде, что она поможет другим, кто (как и я), наткнуться на эту страницу с помощью поиска и нуждается в более подробном объяснении rsync

С помощью сочетания флага --itemize-changes и элемента -vvv, rsync дает подробный вывод обо всех изменениях файловой системы, которые были определены в исходный каталог по сравнению с целевым каталогом. Битовые флаги, создаваемые rsync, могут затем быть декодированы, чтобы определить, что изменилось. Чтобы расшифровать значение каждого бита, используйте следующую таблицу.

Объяснение каждой битовой позиции и значения в выводе rsync:

YXcstpoguax  path/to/file
|||||||||||
||||||||||╰- x: The extended attribute information changed
|||||||||╰-- a: The ACL information changed
||||||||╰--- u: The u slot is reserved for future use
|||||||╰---- g: Group is different
||||||╰----- o: Owner is different
|||||╰------ p: Permission are different
||||╰------- t: Modification time is different
|||╰-------- s: Size is different
||╰--------- c: Different checksum (for regular files), or
||              changed value (for symlinks, devices, and special files)
|╰---------- the file type:
|            f: for a file,
|            d: for a directory,
|            L: for a symlink,
|            D: for a device,
|            S: for a special file (e.g. named sockets and fifos)
╰----------- the type of update being done::
             <: file is being transferred to the remote host (sent)
             >: file is being transferred to the local host (received)
             c: local change/creation for the item, such as:
                - the creation of a directory
                - the changing of a symlink,
                - etc.
             h: the item is a hard link to another item (requires 
                --hard-links).
             .: the item is not being updated (though it might have
                attributes that are being modified)
             *: means that the rest of the itemized-output area contains
                a message (e.g. "deleting")

Некоторые примеры выходных данных из rsync для различных сценариев:

>f+++++++++ some/dir/new-file.txt
.f....og..x some/dir/existing-file-with-changed-owner-and-group.txt
.f........x some/dir/existing-file-with-changed-unnamed-attribute.txt
>f...p....x some/dir/existing-file-with-changed-permissions.txt
>f..t..g..x some/dir/existing-file-with-changed-time-and-group.txt
>f.s......x some/dir/existing-file-with-changed-size.txt
>f.st.....x some/dir/existing-file-with-changed-size-and-time-stamp.txt 
cd+++++++++ some/dir/new-directory/
.d....og... some/dir/existing-directory-with-changed-owner-and-group/
.d..t...... some/dir/existing-directory-with-different-time-stamp/

Захват вывода rsync (ориентирован на битовые флаги):

В моих экспериментах оба --itemize-changes помечают и как -vvv необходим для получения rsync для вывода записи для всех Изменения файловой системы. Без тройного подробного (-vvv) флага я не видел в списке изменений каталога, ссылки и устройства. Стоит поэкспериментировать с вашей версией rsync, чтобы убедиться, что она наблюдает и замечает все, что вы ожидали.

Одним из удобных способов использования этого метода является добавление флага --dry-run в команду и сбор списка изменений, как определено rsync, в переменную (без внесения каких-либо изменений), так что вы можете выполнить некоторую обработку в списке самостоятельно. Что-то вроде следующего будет захватывать вывод в переменную:

file_system_changes=$(rsync --archive --acls --xattrs \
    --checksum --dry-run \
    --itemize-changes -vvv \
    "/some/source-path/" \
    "/some/destination-path/" \
| grep -E '^(\.|>|<|c|h|\*).......... .')

В приведенном выше примере вывод (stdout) из rsync перенаправляется в grep (через стандартный ввод), поэтому мы можем изолировать только строки, содержащие битовые флаги.

Обработка захваченного вывода.

Содержимое переменной затем может быть зарегистрировано для последующего использования или немедленно перебрано для интересующих элементов. Я использую эту точную тактику в сценарии, который я написал во время исследования больше о rsync. Вы можете посмотреть скрипт ( https://github.com/jmmitchell/movestough ) с примерами публикации. -обработка захваченного вывода для изоляции новых файлов, дубликатов файлов (то же имя, то же содержимое), коллизий файлов (то же имя, другое содержимое), а также изменений в структурах подкаталогов.

ответил John Mark Mitchell 26 AMpTue, 26 Apr 2016 00:54:00 +030054Tuesday 2016, 00:54:00
0

1) Водин, это не совсем так. При использовании тега --partial или -P (аналогично --partial --progress) Rsync возобновляет прерванные передачи.

2) Точно, это обычный вывод для тега --itemize-changes.

ответил Joao Figueiredo 18 Jpm1000000pmTue, 18 Jan 2011 22:43:17 +030011 2011, 22:43:17
0

1.) Он «перезапустит синхронизацию», но не будет передавать файлы одинакового размера, отметки времени и т. д. Сначала он создает список файлов для передачи, и на этом этапе он увидит, что он уже перенесли некоторые файлы и пропустим их. Вы должны указать rsync сохранить временные метки и т. Д. (Например, используя rsync -a ...)

Когда rsync передает файл, он будет называть его как .filename.XYZABC вместо filename. Затем, когда он завершит передачу этого файла, он переименует его. Поэтому, если вы убьете rsync во время передачи большого файла, вам придется использовать параметр --partial, чтобы продолжить передачу, а не начинать с нуля.

2.) Я не знаю, что это такое. Можете ли вы вставить несколько примеров?

РЕДАКТИРОВАТЬ: согласно http://ubuntuforums.org/showthread.php?t=1342171 эти коды определены на справочной странице rsync в разделе для параметра -i, --itemize-changes.

Исправлена ​​ошибка, из-за которой мой ответ основывался на ответах Жуана.

ответил Wodin 21 TueEurope/Moscow2010-12-21T01:21:43+03:00Europe/Moscow12bEurope/MoscowTue, 21 Dec 2010 01:21:43 +0300 2010, 01:21:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132