В настоящее время я перемещаю большую файловую систему на новый сервер, поскольку исходный файловый сервер больше не может обрабатывать записи файловой системы.
Чтобы сделать это быстро, я сделал символические ссылки на целевую файловую систему, указывающую на исходную файловую систему.
Изначально: / company / release (точка монтирования исходной файловой системы)
После миграции: /company/release.old (указывает на исходную файловую систему после обновления карты автоматического монтирования) / company / release (указывает на новый файловый сервер / файловую систему после обновления карты автоматического монтирования)
В / company / release есть следующие символические ссылки: /company/release/product-1.0.tar.gz -> /company/release.old/product-1.0.tar.gz /company/release/product-1.0 -> /company/release.old/product-1.0 (это дерево файлов)
Использование символических ссылок позволило мне быстро перенести записи в новую файловую систему. Теперь я хотел бы медленно перенести существующие файлы и каталоги в новую файловую систему.
Проблема, с которой я сталкиваюсь, заключается в том, что поскольку символические ссылки указывают на исходные файлы, rsync не видит никакой разницы и поэтому фактически не копирует файл (ы) или каталог (ы) и не удаляет / перезаписывает символические ссылки.
Есть ли набор флагов rsync, которые будут делать то, что я хочу?
На странице руководства:
-L, --copy-links transform symlink into referent file/dir
В -a
аргумент будет делать то, что вы хотите, копировать символические ссылки (среди прочего), так что местом назначения будет «архивная копия» источника.
Обратите внимание -a
флаг cp
что очень похоже на rsync -a
flag (в том смысле, что он сохраняет все атрибуты, дату и время), НЕ удаляет цель перед копированием, поэтому он копирует любые существующие символические ссылки туда, куда они указывают.
Пример: * Файлы a
, b
, c
со строками «один», «два» и «три» в них соответственно, тогда есть символическая ссылка aa
указывает на a.*
С участием cp -a c aa
, вы получите «три» в, что кажется действительно неправильным, пока вы не поймете, что они используют POSX, а это означает наименьший общий знаменатель.
С участием rsync -a c aa
, символическая ссылка aa
заменяется файлом, содержащим «тройку» и файл a
остается неповрежденным.