Журнал LinuxFormat - перейти на главную

LXF162:Об­лач­ное хранили­ще

Материал из Linuxformat
Перейти к: навигация, поиск


Ре­зерв­ное ко­пи­ро­ва­ние. Пусть все хра­нит­ся в це­ло­сти и со­хран­но­сти, от гре­ха подальше!

Об­ла­ко фай­лов: Ре­зерв­ные ко­пии

Нейл Бот­вик рас­смат­ри­ва­ет оп­ции об­лач­но­го хра­не­ния – на тот слу­чай, ес­ли ка­та­ст­ро­фа по­стиг­нет ва­шу до­маш­нюю сис­те­му.

(thumbnail)
Наш эксперт. У Ней­ла Бот­ви­ка по ком­пь­ю­те­ру в ка­ж­дой ком­на­те, но по со­об­ра­же­ни­ям безо­пас­но­сти он ни за что не ска­жет, где на­хо­дит­ся цен­траль­ный сер­вер.

Все со­глас­ны, что ре­зерв­ные ко­пии – это хо­ро­шо, и неко­то­рые да­же их де­ла­ют. Боль­шин­ст­во де­ла­ет их на внешний же­ст­кий диск, что за­щи­тит вас при от­ка­зе основ­но­го же­ст­ко­го дис­ка, но ма­ло по­мо­жет в бо­лее ка­та­ст­ро­фи­че­­ской си­туа­ции – по­жа­ра, на­воднения, кра­жи со взло­мом, а то и про­сто скач­ка на­пря­жения или его крат­ко­вре­мен­но­го про­ва­ла в мо­мент под­клю­чения внешнего же­ст­ко­го дис­ка. Локаль­ные ре­зерв­ные ко­пии удоб­ны и де­ла­ют­ся бы­ст­ро, но нена­деж­ны. Внешние ре­зерв­ные ко­пии име­ют свои ог­раничения: ско­рость, стои­мость, безо­пас­ность хранения ва­ших дан­ных на чу­жом ком­пь­ю­те­ре. Мы рас­смот­рим, как обес­пе­чить со­хран­но­сть ва­ших дан­ных уда­лен­ным (или об­лач­ным, кому как нра­вит­ся) хранением. Так как локаль­ные ре­зерв­ные ко­пии бо­лее удоб­ны, ес­ли они под ру­кой, мы выберем под­хо­д, когда эти ко­пии лю­бым привычным вам спо­со­бом син­хронизи­ру­ют­ся с об­лач­ным сер­ве­ром, вме­сто то­го, что­бы де­лать дуб­ли­ка­ты, на­страи­вая от­дель­ный сер­вер ре­зерв­но­го ко­пи­ро­вания.

Есть мно­же­ст­во сер­ви­сов об­лач­но­го хранения; и неко­то­рые из них пре­достав­ля­ют «жил­пло­щадь» бес­плат­но – с плат­ны­ми об­нов­ления­ми за ее расширение. Это хо­ро­шие усло­вия, ес­ли вам нуж­но мень­ше мес­та, чем пре­достав­ляе­мое бес­плат­но, или вы точ­но знае­те, сколь­ко мес­та вам по­на­до­бит­ся, пре­ж­де чем пла­тить за него. Здесь мы рас­смот­рим сер­вис, ко­то­рый в боль­шей сте­пени ис­поль­зу­ет ме­тод оп­ла­ты по фак­ту ис­поль­зо­вания – сер­вис S3 от Amazon. Он не пре­достав­ля­ет кли­ен­та ра­бо­че­го сто­ла, все де­ла­ет­ся че­рез web-ин­тер­фейс; но здесь есть API, так что же­лаю­щие мо­гут на­пи­сать кли­ен­та. Для Amazon S3 име­ет­ся кросс-плат­фор­мен­ный GUI-кли­ент DragonDisk, доступ­ный на http://www.dragondisk.com или че­рез менед­жер па­ке­тов ва­ше­го ди­ст­ри­бу­ти­ва. Од­на­ко ре­зерв­ные ко­пии долж­ны де­лать­ся ав­то­ма­ти­че­­ски в фоне и без вме­ша­тель­ст­ва поль­зо­ва­те­ля – ибо тот но­ро­вит от­кла­ды­вать по­доб­ное вме­ша­тель­ст­во, вспо­ми­ная о нем ис­клю­чи­тель­но тогда, когда ре­зерв­ная ко­пия нуж­на. Выбор здесь име­ет­ся, но мы оста­но­ви­лись на s3cmd, про­грам­ме команд­ной стро­ки, объ­е­ди­няю­щей функ­ции ftp (про­грам­мы, а не про­то­ко­ла) и rsync.

От­крой­те учет­ную запись

Пер­вым де­лом нуж­но на­стро­ить учет­ную запись в Amazon S3. S3 не пре­достав­ля­ет бес­плат­ных услуг в том ви­де, как, на­при­мер, Dropbox, т. е. не вы­да­ет вам 2 ГБ на­ве­ки, но в нем есть бес­плат­ный проб­ный пе­ри­од. Он пре­достав­ля­ет вам 5 ГБ хранили­ща и 15 ГБ в ме­сяц бес­плат­ной пе­ре­да­чи, сро­ком на год или до тех пор, по­ка вы не пре­вы­си­те бес­плат­но­го ли­ми­та. Од­на­ко це­ны S3 весь­ма ра­зум­ны и осно­ва­ны толь­ко на реальном ис­поль­зовании. Вы пла­ти­те за ис­поль­зуе­мое ме­сто и за ши­ри­ну по­ло­сы, ис­поль­зуе­мой для пе­ре­да­чи, хо­тя по­след­няя це­на минималь­на, ес­ли вы все­го лишь за­гру­жае­те ре­зерв­ные ко­пии че­рез рав­ные про­ме­жут­ки вре­мени. Что­бы за­вес­ти счет, вам при­дет­ся ука­зать ин­фор­ма­цию по ва­шей кар­те, но ес­ли вы уже де­ла­ли по­куп­ки на Amazon, это, ско­рее все­го, уже сде­ла­но. Для соз­дания сче­та пе­рей­ди­те на http://aws.amazon.com/s3. Когда счет бу­дет соз­дан, вы по­лу­чи­те два клю­ча: ключ досту­па и сек­рет­ный ключ; по су­ти это имя поль­зо­ва­те­ля и па­роль. Спра­воч­ная man-страница s3cmd го­во­рит, что их на­до раз­мес­тить в ~/.s3cmd, но файл, по крайней ме­ре для ре­ли­за 1.1., бу­дет ~/.s3cfg. Впрочем, это особой ро­ли не иг­ра­ет, по­сколь­ку s3cmd соз­даст файл за вас, когда вы за­пусти­те

s3cmd –configure

От­веть­те на во­про­сы, вы­режь­те и вставь­те клю­чи, что­бы обес­пе­чить их пра­виль­ность, и s3cmd го­тов к ра­бо­те. За­пуск

s3cmd ls

не дол­жен ниче­го ото­бра­жать, ес­ли вы по­ка ниче­го не за­гру­зи­ли на свою учет­ную запись S3. Ес­ли он вы­даст вам ошиб­ку, про­верь­те на­строй­ку. Amazon S3 ра­бо­та­ет с кор­зи­на­ми [buckets] и объ­ек­та­ми [objects]. Кор­зи­на – это кон­тейнер. Их мо­жет быть до 100, но их вло­жение не до­пуска­ет­ся: S3 не под­дер­жи­ва­ет подпапок, но это не про­бле­ма, как мы уви­дим да­лее. Кор­зи­на соз­да­ет­ся из кон­со­ли web-управ­ления, или с по­мо­щью s3cmd:

s3cmd mb s3://bucket-name

На­звания кор­зин долж­ны быть уникаль­ны­ми во всем S3 – по­пы­тав­шись соз­дать кор­зи­ну с уже ис­поль­зо­ван­ным именем, вы по­лу­чи­те ошиб­ку. Мож­но из­бе­жать по­доб­ных кол­ли­зий, ес­ли пред­ва­рять на­звания кор­зин сво­им до­мен­ным именем, ес­ли оно у вас есть; вряд ли кто-то еще возьмет, на­при­мер, та­кое имя

s3cmd mb s3://example.com-backups

Мы от­ме­ти­ли, что S3 не под­дер­жи­ва­ет вло­жен­ных кор­зин, и в них мо­гут быть вклю­че­ны толь­ко объ­ек­ты (то есть фай­лы); так как же нам соз­да­вать ре­зерв­ные ко­пии в папках или упо­ря­до­чи­вать мно­го­чис­лен­ные ко­пии, не соз­да­вая при этом мно­же­ст­ва кор­зин? По­сколь­ку S3 не ис­поль­зу­ет папок, / яв­ля­ет­ся за­кон­ным сим­во­лом в имени фай­ла. Итак, когда вы со­хра­няе­те файл как somedir/somefile, это один файл в корне ва­шей кор­зи­ны, но s3cmd бу­дет ин­тер­пре­ти­ро­вать его, как файл в папке. Что­бы за­гру­зить та­кой файл, вве­ди­те:

s3cmd put somedir/somefile s3://example.com-backup/somedir/somefile

По­лез­ным по­боч­ным эф­фек­том то­го, что все это – один файл, яв­ля­ет­ся то, что вам не нуж­но соз­да­вать «папок» на сер­ве­ре до то­го, как вы начнете в них пи­сать. Вы так­же мо­же­те ско­пи­ро­вать сра­зу несколь­ко фай­лов в уда­лен­ную псев­до­папку:

s3cmd *.jpg s3://example.com-backup/photos/

Ко­пи­ро­ва­ние фай­ла за фай­лом на­дое­да­ет очень бы­ст­ро; лучше мы син­хро­ни­зи­ру­ем всю папку ре­зерв­ных ко­пий с S3:

s3cmd sync /mnt/backups/ s3://bucket-name/backups/

Ес­ли вам ка­жет­ся, что это по­хо­же на син­так­сис для rsync, то вы пра­вы, вплоть до зна­чения слэ­шей в име­нах пу­ти. Ес­ли вы ра­бо­та­ли с rsync, то в оп­ци­ях син­хрониза­ции s3cmd вы буде­те как до­ма. На­при­мер, мо­жно ис­поль­зо­вать --exclude для ука­зания папок или фай­лов, ис­клю­чаемых из син­хрониза­ции, или --exclude-from для чтения этой ин­фор­ма­ции из фай­ла. По­след­няя оп­ция по­лез­на при соз­дании ре­зерв­ных ко­пий мно­же­ст­вен­ных пу­тей в S3, по­сколь­ку мож­но ука­зы­вать ис­клю­чения от­дель­но для ка­ж­до­го пу­ти и ис­поль­зо­вать тот же са­мый син­так­сис, когда вы­зы­вае­те s3cmd. Од­ной зна­чи­тель­ное раз­ли­чие ме­ж­ду rsync и s3cmd – то, что rsync ис­поль­зу­ет --delete, а s3cmd ис­поль­зу­ет --delete-removed. Дру­гое – то, что s3cmd ав­то­ма­ти­че­­ски пе­ре­на­прав­ля­ет в папки, ес­ли его вы­звать с по­мо­щью sync. Объ­яснение этих оп­ций мож­но най­ти на man-странице.

Сравнение и кон­траст

Еще од­но раз­ли­чие в том, как две ко­ман­ды изу­ча­ют су­ще­ст­вую­щие фай­лы, об­на­ру­жи­вая в них раз­ли­чия: за­груз­ка всех су­ще­ст­вую­щих фай­лов под­ряд – это яв­но не ва­ри­ант, по­это­му для их сравнения s3cmd ис­поль­зу­ет два ме­то­да. Во-пер­вых, сравнива­ются раз­ме­ры фай­лов; а ес­ли они оди­на­ко­вы, сравниваются кон­троль­ные хэши MD5 локаль­ных и уда­лен­ных фай­лов. Вы­чис­ление уда­лен­ного хэша де­ла­ет­ся на сер­ве­ре Amazon, и ваша по­ло­са пропускания не нагружается. Од­на­ко при этом про­ис­хо­дит неболь­шая за­держ­ка – еще од­на тран­зак­ция с сер­ве­ром (S3 на­чис­ля­ет пла­ту за ка­ж­дые 1000 или 10 000 тран­зак­ций), так что вы мо­же­те от­клю­чить эту опе­ра­цию с по­мо­щью --no-check-md5. Для оп­ре­де­ления иден­тич­но­сти фай­лов час­то хватает про­вер­ки их раз­ме­ра.

(thumbnail)
Рас­ши­ре­ние для Firefox, S3fox, да­ет хо­ро­ший кон­троль над ва­шим хра­не­ни­ем дан­ных S3; в по­след­нее вре­мя я ис­поль­зую Firefox ис­клю­чи­тель­но для это­го.

При ис­поль­зо­вании лю­бо­го об­лач­но­го хранения нуж­но учи­ты­вать безо­пас­ность ва­ших дан­ных. Ес­ли вы соз­дае­те ре­зерв­ную ко­пию сво­ей до­машней папки, там на­вер­ня­ка бу­дет кон­фи­ден­ци­аль­ная ин­фор­ма­ция. Сер­ви­са, ко­то­рый шиф­ру­ет ва­ши дан­ные, недоста­точ­но, по­то­му что для это­го ему при­дет­ся ука­зать клю­чи. Ес­ли вам нуж­на про­грам­ма ре­зерв­но­го ко­пи­ро­вания с соб­ст­вен­ным шиф­ро­ванием, то лич­но мне по­ка­за­лась пре­восход­ной dar (http://dar.linux.free.fr). В ином слу­чае вам при­дет­ся рас­смот­реть воз­мож­ность шиф­ро­вания дан­ных пе­ред их за­груз­кой. Это мож­но сде­лать с по­мо­щью че­го-то вро­де GPG, но тогда при­дет­ся хранить два эк­зем­п­ля­ра ва­ших ре­зерв­ных ко­пий, ес­ли толь­ко вы не из­ба­ви­лись от неза­шиф­ро­ван­ной локаль­ной ко­пии по­сле за­груз­ки на сер­вер хранения. А тогда вам при­дет­ся де­шиф­ро­вать все пе­ред восста­нов­лением – так что все рав­но по­на­до­бит­ся лишнее ме­сто. Од­но из ре­шений – вир­ту­аль­ная фай­ло­вая сис­те­ма ecryptfs: она хранит за­шиф­ро­ван­ные дан­ные на ва­шем дис­ке, но де­ла­ет де­шиф­ро­ван­ную ко­пию без необ­хо­ди­мо­сти уд­ваи­вать дис­ко­вое про­стран­ст­во или занимать­ся де­шиф­ро­ванием вруч­ную. Скажем, у вас есть две пустых папки в /mnt/backup, под на­званием plain и secret. На­строй­те фай­ло­вую сис­те­му ecryptfs с по­мо­щью:

sudo mount -t ecryptfs /mnt/backup/secret /mnt/backup/plain

За­дай­те ко­до­вую фра­зу для безо­пас­но­сти и при­ми­те на­строй­ки по умол­чанию для прочих во­про­сов. За­тем ско­пи­руй­те пару фай­лов в plain и осмот­ри­те со­дер­жание обе­их папок. Вы уви­ди­те сов­па­даю­щие фай­лы (шиф­ро­вать имена фай­лов то­же мож­но), но фай­лы в secret бу­дут нечи­тае­мы­ми. Те­перь раз­мон­ти­руй­те:

sudo umount /mnt/backup/plain

Папка plain бу­дет пуста, а secret бу­дет по-прежнему со­дер­жать за­шиф­ро­ван­ные фай­лы. По­вто­ри­те ко­ман­ду mount, что­бы вер­нуть на­зад со­дер­жи­мое. Осталось сде­лать ре­зерв­ную ко­пию папки plain и син­хронизи­ро­вать папку secret с об­ла­ком:

s3cmd sync /mnt/backup/secret/ s3://bucket-name/backups/

Чтобы восста­но­вить весь на­бор своих ре­зерв­ных ко­пий, просто по­ме­няйте в этой ко­ман­де мес­та­ми локаль­ный путь и путь кор­зи­ны. Ре­зерв­ные ко­пии бывают весь­ма объемны, а в S3 нет оп­ции resume при за­груз­ке дан­ных, и ­хорошо бы ва­ша про­грам­ма ре­зерв­но­го ко­пи­ро­вания де­ли­ла ре­зерв­ные ко­пии на бо­лее мел­кие час­ти; тогда, ес­ли со­единение ра­зо­рвет­ся, про­цесс при­дет­ся по­вто­рить толь­ко для час­ти ко­пий. Сто­ит так­же по­вто­рить ко­ман­ду sync по за­вер­шении пе­ре­да­чи дан­ных; пред­поч­ти­тельнее сде­лать это с по­мо­щью оп­ции --no-check-md5, что­бы удо­сто­ве­рить­ся, что все бы­ло за­гру­же­но без по­вре­ж­дений. Вто­рой этап s3cmd sync должен за­вер­шить­ся без пе­ре­да­чи фай­лов. S3cmd от­лич­но под­хо­дит для пе­ре­да­чи дан­ных пар­тия­ми из команд­ной стро­ки или скрип­та ре­зерв­но­го ко­пи­ро­вания, но иногда фай­лы на­до про­смот­реть. По­ми­мо уже упо­ми­нав­ше­го­ся DragonDisk и Amazon Web Console, есть так­же мо­ду­ли рас­ши­рения брау­зе­ра для Firefox и Chrome/Chromium; осо­бо по­ле­зен S3fox. |

Персональные инструменты
купить
подписаться
Яндекс.Метрика