5

Я использую rsync для создания резервных копий на внешнем жестком диске. Я обычно бегаю всухую, чтобы проверить работоспособность. Конкретно я буду использовать

rsync -auvn path/to/source path/to/dest

Однако при этом печатаются все рекурсивные каталоги, независимо от того, нужно ли копировать его или любой из его файлов. Поскольку я создаю резервную копию большой структуры файлов, это печатает наши сотни каталогов, и обычно есть только пара файлов, которые необходимо скопировать. Таким образом, этот вывод не идеален и требует от меня копаться в сотнях строк ненужного вывода, чтобы фактически выполнить мою проверку работоспособности.

Мне бы хотелось, чтобы можно было распечатать только фактические операции, которые должны быть выполнены. Мой текущий способ обхода | grep '\.' , но, очевидно, это не идеальный фильтр.

Есть ли какой-нибудь способ заставить сухой режим работы rsync не распечатывать каталоги?

1 ответ1

5

Я часто использую rsync для синхронизации структур каталогов и хотел бы выполнить пробный прогон перед выполнением фактической команды. Меня тоже раздражает печать имен каталогов, поэтому я использую grep для их фильтрации.

Одно из различий между моим и вашим использованием заключается в том, что я использую опцию --delete для удаления файлов из целевого каталога. Соответственно, я не хочу, чтобы grep отфильтровывал такие строки, как

deleting folderA/
deleting folderA/folderB/

Кроме того, мне нравится держать пустую строку (^$) для удобства чтения, поэтому полный конвейер выглядит так:

rsync -auvn --delete source_folder destination_folder | grep -E '^deleting|[^/]$|^$'

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .