Подскажите, как в скрипте на bash реализовать следующее:Есть два дерева файлов.
В совпадающих подкаталогах дерева могут быть файлы, являющиеся друг другу хардлинками.
Необходимо, чтобы целевое дерево стало идентичным исходному ( были созданы недостающие каталоги, удалены лишние каталоги и их содержимое. Если в совпадающих подкаталогах есть файлы с совпадающими именами, то необходимо сравнить inode файлов, если они не равны, удалить несовпавший файл и сделать хардлинк.
В результате выполнения процедуры должны получить идентичные деревья каталогов,
аналогичные тому, что получается в результате
cp -lR /data/source/* "/data/target"
После чего на них натравится rsync с ключом --delete.
Задумка состоит в том, чтобы не удалять "лишние" (устаревшие) бэкапные копии, а готовить из них новую структуру каталогов для проведения rsync "завтра", экономя на операциях создания / удаления при _огромном_ количестве сравнительно редкоменяющихся файлов.
----------
В качестве альтернативы, можно рассмотреть вариант проведения этой операции на Perl.
---
//В конечном счете планируется реализовать "внятную" систему бэкапа, которая возьмет в себя лучшие фичи систем Dirvish и Bontmia, и сможет rsync-ом бэкапить lvm-тома как девайсы, lvm-тома как файловые системы, просто файловые системы, БД MySQL (методами mysqldump/lvm-snapshot-as-device/lvm-snapshot-as-files) / Postgresql.
В сочетании с разными плюшками хранилищ с дедупликацией - может получиться очень даже и прилично =)
Всем заинтересованным в системе бэкапа предлагаю поучаствовать. Две+ головы - однозначно лучше.