Кто-нибудь может сказать мне, что это делает?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
Удаляет ли bkp01
и offbk2
отправляет логи offbkp01.log
?
Кто-нибудь может сказать мне, что это делает?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
Удаляет ли bkp01
и offbk2
отправляет логи offbkp01.log
?
Ответы:
Чтобы разбить это на части, есть два основных раздела, за которыми следуют резюме и примечания:
rsync
:rsync -uva --delete /srv/bkp01 /srv/offbk2/
rsync-command > ~/offbkp01.log
rsync
команда:rsync
- Я предполагаю, что это не нуждается в объяснении (но предоставит по запросу).-uva
- Набор опций с одним символом (короткая, а затем длинная форма):
-u
--update
- Сообщает rsync, что все модификации должны применяться только к файлам в месте назначения того же возраста (и разных размеров) или старше, чем файлы в источнике. То есть rsync должен передавать только те изменения из источника, которые будут обновлять место назначения, но он не должен вносить никаких изменений, из-за которых файл назначения становится более старой версией.
Есть несколько исключений. Различия в типах (например, один файл, другой каталог) приведет к обновлению независимо от даты. Симлинки и другие специальные файлы игнорируют эту опцию. И, что важно, это не влияет на то, какие файлы будут удалены.
-v
--verbose
- Увеличивает количество информации, выводимой rsync во время выполнения. Без этого rsync ничего не напечатает (почти?). С этой опцией, как есть, rsync сообщит вам, какие файлы передаются, и поместит сводку в конце. v
Чем больше s, тем больше печатается информации, хотя на странице руководства сказано, что более двух v
s следует использовать только при отладке. -a
--archive
- Это эквивалентно нескольким другим параметрам ( -rlptgD
), упакованным вместе. Как следует из длинного названия, это быстрый способ установить множество общих параметров для архивирования файлов и каталогов. Так и будет:-r
--recursive
- Говорит rsync, чтобы копировать каталоги рекурсивно. Без этого или более конкретного -d
--dirs
параметра rsync просто пропустит все каталоги, с которыми он столкнулся (и сообщит вам об этом в своих выходных данных). -l
--links
- Если источником является символическая ссылка, создайте символическую ссылку в месте назначения. В зависимости от других параметров символические ссылки могут быть пропущены или превращены в полную отдельную копию (т. Е. Настоящий каталог с содержимым (или другой копией файла) вместо символической ссылки). -p
--perms
- Устанавливает разрешения для файлов назначения так же, как исходные файлы. -t
--times
- Устанавливает время модификации файлов назначения так же, как исходные файлы. Поскольку синхронизация этих времен делает алгоритм rsync более эффективным, вы, как правило, всегда хотите, чтобы это использовалось явно или неявно. -g
--group
- Устанавливает атрибут группы назначения так же, как источник. По умолчанию ассоциируется по имени, но в некоторых случаях будет использовать идентификатор группы. Если принимающий rsync не запускается как суперпользователь (или имитирует его --fake-super
), можно установить только те группы, членом которых является пользователь, который вызвал rsync на принимающей стороне. В противном случае для группы будет просто установлена группа по умолчанию того же пользователя, о котором упоминалось ранее. -D
- эквивалентен вариантам --devices
и --specials
вместе. Они имеют в виду:--devices
- Символьные и блочные файлы устройства передаются. Не имеет эффекта, если получающий rsync не запущен как суперпользователь (или имитирует его --fake-super
). --specials
- Специальные файлы (например, сокеты) передаются (в противном случае они не будут). --delete
- Говорит rsync удалить файлы, которые находятся в месте назначения, но не в источнике. Это НЕ зависит от опции обновления, установленной выше (действительно, как это может быть, так как большинство файловых систем не сохранит необходимые данные, чтобы увидеть, какое действие было более новым?). Эта опция действует на источники после расширения по шаблону / glob, поэтому dir / * не совпадает с dir /. Некоторые важные замечания:--dry-run
сначала попробовать его с опцией, которая выполнит притворную передачу, которая позволит вам убедиться, что непреднамеренные изменения не внесены. --ignore-errors
опции, хотя вы, вероятно, не хотите / не хотите этого делать.--delete-during
алгоритм. Если получатель старше, то --delete-before
используется. Если важно, чтобы файлы сохраняли определенную согласованность при возникновении ошибки (например, ничего не удаляя до тех пор, пока не будут сделаны все другие изменения), вам следует использовать более конкретный параметр, чем параметр по умолчанию./srv/bkp01
- Исходный файл или каталог. Существуют некоторые подробные правила о том, что это означает, если в конце каталога есть / нет косой черты, и если существует другой каталог. Вы можете увидеть подробности в разделе ИСПОЛЬЗОВАНИЕ справочной страницы, но здесь отсутствие косой черты означает, что этот каталог будет скопирован в место назначения, а не содержимое этого каталога будет скопировано в место назначения. То же самое, если это файл, а не каталог./srv/offbk2/
- Каталог назначения. В общем, это всегда будет последний элемент, перечисленный в разделе команды rsync, если только параметр не используется для его указания в другом месте команды.>
- Это перенаправляет стандартный вывод (стандартный вывод) из того, что находится слева, в файл справа, становится его содержимым и создает файл (если это возможно), если он еще не существует. Некоторые заметки:2>&1
в самый конец команды выше. Порядок важен, поэтому будьте осторожны, обобщая, где его разместить. Магическое число 1
относится к stdout, 2
относится к stderr, &
является (по существу) «адресом», а полный фрагмент команды означает «перенаправить вывод stderr в поток stdout». >>
вместо этого. Метод перенаправления stderr в то же место остается прежним. 1> stdout_file 2> stderr_file
. Вы также можете использовать >>
вместо >
этой команды, добавив вместо замены.~
- Это сокращение для домашнего каталога текущего пользователя и является частью следующего бита.~/offbkp01.log
- файл offbkp01.log в домашнем каталоге текущего пользователя. Это где вывод команды rsync будет помещен из-за перенаправления с >
.Таким образом, эта команда будет:
/srv/bkp01
, /srv/offbk2/bkp01
, и он удалит все, /srv/offbk2/
что не входит/srv/bkp01
, при следующих условиях:
/srv/offbk2/
том , что новее , чем время модификации на /srv/bkp01
, он не будет обновляться , если оба элемента все еще тот же самый тип (обычный файл, каталог или символическая (? )). Кроме того, rsync выведет некоторую информацию о том, что он делает (в частности, какие файлы передаются, и итоговую сводку ), которую оболочка запишет в файл ~/offbkp01.log
. Этот файл журнала будет создан заново, если он еще не существует, и будет перезаписан, если он уже существует.
NB: --fake-super
это опция, используемая для того, чтобы rsync имитировал действия суперпользователя. Это делается с помощью расширенных атрибутов файлов для хранения атрибутов, которые он не может установить, не имея больших привилегий. Реальная версия каждого атрибута установлена на то, что имеет смысл, учитывая доступные параметры и привилегии. Хотя это делает удобным создание некоторых резервных копий, даже если у вас нет привилегий суперпользователя, следует также отметить, что это может представлять риск для безопасности, превышающий использование rsync в целом, поскольку реальные атрибуты безопасности могут быть не установлены правильно, хотя информация о них была скопирована.
Источник: много времени работал с rsync и читал его man-страницу .
Из руководства:
--удалять
Это говорит rsync об удалении посторонних файлов с принимающей стороны (тех, которые не на отправляющей стороне), но только для каталогов, которые синхронизируются. Вы должны были попросить rsync отправить весь каталог (например, «dir» или «dir /») без использования подстановочного знака для содержимого каталога (например, «dir / *»), так как подстановочный знак раскрывается оболочкой, и, таким образом, rsync получает запрос передавать отдельные файлы, а не родительский каталог файлов. Файлы, которые исключены из передачи, также исключаются из удаления, если вы не используете опцию --delete-exclude или не помечаете правила как совпадающие только на отправляющей стороне (см. Модификаторы include / exclude в разделе ПРАВИЛА ФИЛЬТРА).
Таким образом, он удалит из пункта назначения файлы, которые не являются частью исходного каталога, если вы не использовали подстановочные знаки.
Исходный каталог:
1.txt
2.txt
3.txt
Целевой каталог:
4.txt
4.txt исчезнет после того, как rsync и 1.txt, 2.txt и 3.txt будут в месте назначения.
Что касается других вещей:
uva
Нет, это только удалить посторонние файлы из bkp01
каталога.
Также:
-u
, --update
- пропускать файлы, которые новее на приемнике-v
, --verbose
- увеличение детальности-a
, --archive
- режим архива; равно -rlptgoD (нет -H, -A, -X)Выходные данные rsync -uva --delete /srv/bkp01 /srv/offbk2/
команды отправляются в ~/offbkp01.log
файл с помощью оператора перенаправления ( >
), а не выводятся на ваш терминал. Если файл не существует, он будет создан. Если файл существует, старый контент будет удален.
Смотрите man rsync
для получения дополнительной информации.
bkp01
. Он просто удаляет посторонние файлы - то есть те, которые не существуют в источнике - из места назначения.
rsync
Удаленное копирование файлов - синхронизируйте деревья файлов на локальных дисках, в каталогах или по сети.
-u update
-v verbose
-a archive
--delete --> delete
Здесь он будет удалять файлы внутри offbk2 .
Затем вывод результата (успех или нет) будет перенаправлен в этот файл журнала.