Rsync -avzHP слід за твердими посиланнями, а не копіювати їх як жорсткі посилання


13

Я використовую rsnapshot для створення погодинних / щоденних / щотижневих / щомісячних резервних копій моєї "роботи" -обміну. Тепер я намагаюся скопіювати весь резервний каталог на зовнішній диск за допомогою rsync.

Я використовував цю команду / параметри під час екранного сеансу (так, rsync-isključie.txt лежить у режимі, з якого я запускаю команду)

rsync -avzHP --exclude-from 'rsync-exclude.txt' /share/backup/ /share/eSATADisk1/backup/;

Вся справа працює на QNAP TS-439, внутрішній привід - це єдиний диск (без RAID), сформований EXT4, зовнішній диск форматований EXT3.

Що відбувається: Rsync слідкує за кожним твердим посиланням і копіює фактичний файл, а не відтворює оновлену жорстку посилання на зовнішньому диску. Я не розпізнав це одразу, тому зовнішній диск потрапив у коробку з xxx копіями тих же файлів.

Я хочу досягти: Копіювання всієї структури файлів, створеної rsnapshot, на зовнішній диск, зберігаючи жорсткі посилання для економії місця. Примітка. Це не обов'язково потрібно робити за допомогою rsync.

Дякуємо за ваші ідеї та час. Буду вдячний за вашу допомогу, великий час.

Оновлення: я дізнався, що rsnapshot не використовує символьні посилання, він використовує жорсткі посилання, тому я зараз використовую опцію -H, яка повинна зберігати структуру жорсткого посилання, що відповідає Rsnapshot для декількох напрямків (або підтримувати структуру жорстких посилань), але вона все одно не працюватиме ... чого я тут пропускаю?

Оновлення 2: Я знайшов іншу думку / заяву на цю тему тут: rsync з --hard-посиланнями заморожується. Стівен Понеділок пропонує не намагатися rsync великих файлових структур, що містять жорсткі посилання , оскільки це забирає багато пам'яті, - це важке завдання для rsync. Тому, мабуть, кращим рішенням було б зробити .img структури даних, яку я намагаюся створити резервну копію. Як ти гадаєш?


Я роблю точно так само, як і ви! +1. Спробуємо підхід ДД
mmalmeida

Відповіді:


10

В rsyncкомандування -H(або --hard-linksваріант) буде, по ідеї, робити те , що ви намагаєтеся досягти, що, коротко: створити копію файлової системи , яка зберігає жорстку зшиту структуру оригіналу. Як я вже згадував у своїй відповіді на інше подібне питання , ця опція приречена на збій, коли ваша вихідна файлова система перевищить певний поріг складності жорсткого зв'язку.

Точне розташування цього порогу може залежати від вашої оперативної пам’яті та загальної кількості жорстких посилань (і, мабуть, від багатьох інших речей), але я виявив, що немає сенсу намагатися точно визначити це. Що насправді важливо, це те, що поріг дуже легко перетнути в реальних ситуаціях, і ви не знатимете, що ви його переступили, доки не настане день, коли ви спробуєте запустити rsync -aHабо, cp -aщо бореться і врешті-решт не вдасться .

Що я рекомендую, це таке: Скопіюйте вашу сильно пов'язану файлову систему як один блок, а не як файли. Тобто скопіюйте весь розділ файлової системи як одну велику крапку. Для цього є ряд інструментів, але найбільш всюдисущий dd.

Маючи прошивку на складі, ваш QNAP NAS повинен був бути ddвбудований, а також fdisk. С fdisk, створіть розділ на накопичувачі, який принаймні такий же великий, як і вихідний розділ. Потім використовуйте ddдля створення точної копії вашого вихідного розділу на новоствореному розділі призначення.

Поки ddкопія триває, ви повинні переконатися, що нічого не зміниться у вихідній файловій системі, щоб у вас не з’явилася пошкоджена копія у пункті призначення. Один із способів зробити це - до umountджерела перед початком процесу копіювання; інший спосіб - встановити джерело в режимі лише для читання.


Припустимо, я ніколи не використовую жорсткі посилання поза каталогом резервних копій rsnapshot, чи все-таки я потрапляю в проблеми? Мені не вистачає місця на жорсткому диску, але хочу зробити резервні копії rsnapshot. Наразі мій диск заповнюється.
Шрідхар Сарнобат

Я думаю, я потрапив у ситуацію, на яку ти вказав. У мене є резервна каталог із багатьма знімками, створеними за допомогою rsync. У ньому багато файлів з багатьма жорсткими посиланнями Загальне використання диска - близько 200G. Я копіюю його на інший розділ, використовуючи 'rsync -avH'. Але через 4 (або 5?) Дні та ночі процес копіювання все ще триває. Я думаю, що rsync ретельно плутається із загальною кількістю жорстких посилань у вихідному каталозі.
Guangliang

У Ubuntu 18.04 це --hard-links(з 's').
nobar

1

-l для символьних посилань, чому б це робило щось для жорстких посилань?

(Вибачте, це відповідь, а не коментар. У мене поки немає прав на коментарі, і на цю відповідь потрібна відповідь)

Ще одне зауваження, яке повинно бути коментарем: це все рідне обладнання або ви перебуваєте на VM, мережевому кріпленні?

Редагувати

ігноруйте мої попередні коментарі щодо того, чому ви використовуєте жорсткі посилання, я пропустив rsnapshotкоментар.

Було б корисно провести тест, який спочатку перевіряє rsync між двома локальними каталогами локальним диском, а потім із віддаленим диском. Цей невеликий тест показує -Hопцію вокерів, як очікувалося. -iВаріант для lsшоу иноді, тим самим показуючи , що посилання були збережені без будь - яких додаткових копій.

$ rsync -avzHP src/ dest
sending incremental file list
created directory dest
./
file111_prime.txt
           9 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/3)
file111.txt => file111_prime.txt

sent 156 bytes  received 59 bytes  430.00 bytes/sec
total size is 18  speedup is 0.08

$ ls -liR
.:
total 8
414044 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 dest
414031 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 src

./dest:
total 8
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

./src:
total 8
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

Наступний тест rsync -avzHP src/ host:/tmpна віддалений хост все ще підтримував жорсткі посилання


Ви абсолютно праві, після деяких подальших досліджень я виявив, що rsnapshot використовує не посилання, а жорсткі посилання. Я відповідно оновив своє запитання. Таким чином, рішення повинно використовувати -H та копіювати весь каталог (як я це роблю), щоб зберегти структуру жорсткого посилання, побудовану rsnapshot, але вона все ще не працює. Коли я починаю копіювати що-небудь із щоденного.0, копіюється, а не лише змінені файли. // І так, я використовую для цієї операції Qnap TS-439 та зовнішній Lacie Drive.
woerndl

Чи можете ви зменшити цю проблему, маючи dir тестового джерела та dir тестового пункту із лише двома файлами у вихідному коді, міцно пов’язаними разом? Крім того, як ви визначаєте, що посилання не оброблялось правильно та нарешті, навіщо використовувати жорсткі посилання, якщо ви читаєте довгий текст на -Hсторінці сторінки, ви можете побачити, що є кілька застережень, які, як мені сказати, спробуйте триматися подалі від жорстких
посилань

Я встановлю тестовий випадок і постійно інформуватиму вас. Дякую вам за ваші ідеї поки що.
woerndl

1

Це довгий кадр, але якщо ви не можете знайти інше рішення, я б запропонував спробувати відформатувати USB-накопичувач як EXT4. Можливо, це може бути проблемою: https://bugzilla.samba.org/show_bug.cgi?id=7670

Враховуючи достатньо жорсткі посилання у вихідній папці та достатньо невеликий об'єм призначення, копіювання за допомогою rsync --hard-links може не вдатися. Rsync виходить з ладу, вичерпавши максимальну кількість жорстких посилань у пункті призначення ... ... справжньою проблемою є не rsync, а замість основної файлової системи.


Дякую за вашу участь у моїй проблемі! Схоже, це стосується самби. Мій привід безпосередньо прикріплений до NAS.
woerndl

1
Привіт, жодна проблема не пов'язана з Самба. Це дім веб-сайту rsync: rsync.samba.org
Моцель,

0

Ви спробували додати -lваріант?

Я знаю, що сторінка man говорить про те, що вона включена, -aале довідкові сторінки не завжди на 100% точні.


Дякуємо за ваш відгук. Мені довелося актуалізувати своє запитання: Rsnapshot не використовує символьні посилання, а жорсткі посилання для створення його інкрементальної структури резервного копіювання. Тож-я все одно не допоможу, але -Н повинен, що, на жаль, також не працює.
woerndl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.