Як створити резервну копію одного великого файлу з невеликими змінами?


9

Якщо набір файлів (по кілька ГБ кожен) і кожен змінюється незначно щодня (у випадкових місцях, не лише інформація, що додається в кінці), як це можна скопіювати ефективно? Я маю на увазі в тому сенсі, що оновлюються лише змінені частини, а не цілі файли. Це означало б різницю між копіюванням декількох Kb туди-сюди або деяких ГБ.


Бінарний розл? Я думаю, що це річ, але я не думаю diff, що це зробить
кіт

@cat: diffможливо, можна повідомити про відмінності, але тут проблема полягає в копіюванні невеликих відмінностей.
Quora Feans

Що ж, я думав просто скопіювати різниці - rsyncкраще
кіт

Відповіді:


25

Програма rsync робить саме це. На чоловіковій сторінці:

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


Насправді rsync насправді працює під час написання цієї відповіді, створюючи резервну копію всього цього пристрою на моєму файловому сервері (з zfs).
hlovdal

Для цілей резервного копіювання я б рекомендував рекомендувати rdiff-backup ( nongnu.org/rdiff-backup ). Я використовую це для резервного копіювання чотирьох різних машин, які вже кілька років мають хороші результати.
Томас Падрон-Маккарті

У Вікіпедії є чітке пояснення, як rsyncпорівнювати фрагменти файлів за допомогою прокатки контрольних сум.
Адам Кац

Я спробував rsync "повернути" назад до старого зображення жорсткого диска VM, де було змінено лише декілька файлів всередині, на жаль, rsync, здається, знову копіює весь файл (вимагаючи ~ 3 хв. ~ 300 Мб / с)? rsync -av --progress --partial --inplace arch-test1.qcow2.bak arch-test1.qcow2
feedc0de

8

Ви, мабуть, хочете сучасну програму резервного копіювання. Перевірте BorgBackup .

Це зробить кілька резервних копій кожної версії вашого великого файлу, але поділить загальний вміст між різними версіями, тому загальний простір, який використовується для даної версії вашого великого файлу, буде лише трохи більше, ніж загальний обсяг диска для одного версія, припускаючи, що різні версії лише незначно відрізняються.


5

Якщо ви IO-обмежена будь - яким чином, використовувати файлову систему , такі як BTRFS або ZFS , яке підтримує додаткові резервні копії без необхідності знайти відмінності в файлах, наприклад, то , що rsyncповинен робити.

Використання rsyncбуде повільним та дуже інтенсивним IO.

Тому що якщо будь-яка програма записує зміни до файлів, якимось чином обмежена вводу-виводу, використання rsyncцього забирає значні цикли вводу-виводу від програми, саме тому існують файли. І якщо ваш процес резервного копіювання або система обмежена rsyncIO, відбирає цикли введення-виведення від вашої доступної пропускної здатності резервного копіювання.

Просто Google "rsync повільний". Наприклад: rsync дуже повільний (фактор 8 до 10) порівняно з cp при копіюванні файлів з nfs-share у локальний dir


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