rsync преко VPN-а: која страна је извор истине?
Тунел вам даје пут, не политику спајања. Изаберите ауторитативну копију, прегледајте једносмерну копију у пробном раду и затим одвојено одлучите да ли брисања путују.
Два сервера, један 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-а након прекида враћа повезаност; не говори ништа о томе да ли је последња копија завршена или да ли су конфликтне измене икада решене.