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 по прекин ја враќа поврзаноста; тоа не кажува ништо за тоа дали последната копија завршила или дали конфликтните промени некогаш биле решени.