Два серверы, адзін VPN, адзін каталог, які павінен існаваць у абодвух месцах, і каманда, якую лёгка запусціць і цяжка адмяніць. Перш чым яе ўводзіць, вырашыце, якая копія аўтарытэтная, бо кожнае наступнае пытанне пра rsync залежыць ад гэтага адказу. Аднабаковая рэпліка, агульная працоўная папка і архіў з версіяваннем патрабуюць розных правілаў для змен і выдаленняў. Тунэль дае шлях і не мае думкі ні пра адно з іх.

Вырашыце, якая копія галоўная, перш чым уводзіць каманду

Запішыце напрамак адным сказам, уключна з іменем хоста і шляхам з кожнага боку, і атрымайце згоду таго, каму належаць даныя. У гэтым разборы крыніца — /srv/publish/, а прыёмнік — уліковы запіс на fileserver.example, якому дазволена пісаць толькі ў /srv/mirror/.

Пацвердзіце факты пра транспарт да капіравання: ключ хоста SSH правераны, уліковы запіс прыёмніка можа пісаць у вобласць рэплікі і нідзе больш, а абодва хосты маюць сумяшчальныя версіі rsync. Гэтыя перадумовы не даюць невялікай памылцы планавання ператварыцца ў інцыдэнт з правамі. Яны таксама кажуць, які ўліковы запіс з'явіцца ў журналах прыёмніка, калі нешта пойдзе не так.

Прагледзьце копію ў пробным запуску і прачытайце падрабязны спіс

Спачатку запусціце капіраванне з флагам пробнага запуску і захавайце вывад. Падрабязныя змены кажуць, што адбылося б з кожным шляхам, і гэта значна карысней за выніковую зводку пасля факту. Захавайце вывад у журнале змен, каб наступнаму запуску было з чым параўноўваць.

rsync -rt --dry-run --itemize-changes -e ssh -- /srv/publish/ [email protected]:/srv/mirror/

Завяршальная косая рыска мае значэнне. На баку крыніцы яна азначае змест гэтага каталога, а яе адсутнасць дадае дадатковы ўзровень каталога з іменем крыніцы. Кіраўніцтва rsync апісвае абедзве формы разам з флагамі захавання метаданых, і патрэбны набор параметраў залежыць ад даных, а не ад звычкі.

Чытайце кожны радок адносна таго прыёмніка, які вы задумалі. Выдаленне флага пробнага запуску выконвае капіраванне і можа перазапісаць файлы, а без параметра выдалення лішнія файлы, што ўжо ёсць на прыёмніку, проста застаюцца на месцы. Гэта бяспечныя тыповыя паводзіны толькі тады, калі вы сапраўды вырашылі, што пакінутыя састарэлыя файлы дапушчальныя. Калі адказ адмоўны, прымаць трэба рашэнне пра выдаленне, апісанае ніжэй, а не дадаваць яшчэ адзін флаг у гэтую каманду.

Потым вырашыце, ці перадаюцца выдаленні

Зрабіць прыёмнік люстэркам — другое рашэнне, а не ўдакладненне першага. Прагледзьце яго асобна, дадаўшы флаг выдалення і нічога больш не змяняючы, каб розніца ў спісе цалкам належала гэтаму рашэнню.

rsync -rt --delete --dry-run --itemize-changes -e ssh -- /srv/publish/ [email protected]:/srv/mirror/

Выдаленні прыбіраюць лішнія файлы на прымальным баку ў межах сінхранізаванай вобласці, таму памылковы шлях крыніцы, непрымацаваны каталог або фільтр, што выключае больш за задуманае, могуць зрабіць разбуральны запуск падобным на чыстае люстэрка. Спіс пробнага запуску — адзінае месца, дзе гэтая розніца становіцца бачнай да таго, як стане дарагой. Трымайце незалежную копію для аднаўлення там, дзе даныя гэта апраўдваюць, і памятайце, што люстэрка дакладна ўзнаўляе выпадковае выдаленне замест захавання гісторыі.

Пробны запуск таксама нічога не блакуе. Людзі рэдагуюць файлы паміж пробай і рэальным запускам, а файлавыя сістэмы маюць уласную думку, таму запуск, які вы ўхвалілі, і запуск, які выконваецца, — не тая самая аперацыя, калі абодва дрэвы не знаходзяцца ў спакоі.

Дзве аднабаковыя задачы не даюць двухбаковай сінхранізацыі

Запуск той самай каманды ў абодвух напрамках — найбольш распаўсюджаны спосаб страціць даныя ў гэтым сцэнары. Кожны напрамак лічыць іншы бок прыёмнікам і весела перазапісвае навейшы змест, а выдаленні люстэркавяцца ў тым парадку, у якім спрацоўвае расклад.

Калі карыстальнікі мусяць рэдагаваць абедзве копіі, гэта іншае прадуктовае рашэнне: апрацоўка канфліктаў, адсочванне выдаленняў і інструмент, спраектаваны пад такую мадэль. Набліжаць яго парадкам раскладу — так агульная папка атрымлівае дзве версіі кожнага дакумента, якія ніхто не можа ўзгадніць. Вырашыце гэта яўна, замест таго каб набліжаць двума запісамі cron і надзеяй.

Аўтаматызуйце толькі пасля таго, як палітыка запісана

Планаваная задача павінна несці напрамак, шляхі, палітыку метаданых і зацверджанае рашэнне пра выдаленне. Змясціце гэтыя пяць фактаў у сам файл задачы, а не на вікі-старонку, якую наступны адміністратар, магчыма, ніколі не прачытае. Не дапускайце запускаў, што перакрываюцца, бо дзве копіі, якія пішуць адно дрэва адначасова, ствараюць стан, якога не жадала ні адна з іх.

Калі крыніца — жывая база даных або іншы шматфайлавы набор даных, спачатку зрабіце экспарт, узгоднены з праграмай, або скаардынаваны здымак. Рэкурсіўны абыход файлаў не з'яўляецца транзакцыяй, а копія набору даных, што змяняецца, не з'яўляецца ўзгодненай.

Запісвайце завяршэнні і збоі і правярайце набор даных на прыёмніку, а не толькі код выхаду. Аднаўленне VPN пасля збою аднаўляе злучанасць; яно нічога не кажа пра тое, ці завяршылася апошняя копія або ці былі калі-небудзь вырашаны канфліктныя змены.

Падобныя артыкулы