Як rsync великий файл з якомога меншими витратами на процесор і пропускну здатність?


13

У мене є файл 500 ГБ, який я планую віддалено створити резервну копію. Файл часто змінюється. Я буду рисинсувати його з робочого столу на сервер. Обидва можуть запускати клієнт або сервер rsync.

Яка для цього правильна команда? Ті, що я спробував увімкнути, приймали назавжди або просто діяли дивно.

Приклад та результати:

rsync -cv --partial --inplace --no-whole-file /desktop/file1 myserver.com::module/file1 

Здається, працює, але тільки якщо я це роблю двічі (?!). Також повільно.

Чи робить вищевказана команда контрольної суми на обох комп'ютерах чи лише на відправляючому? Чи правильно це інакше?


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

Будь-які інші пропозиції? Мені слід користуватися деяким додатком, власний клієнт Dropbox робить це дуже добре. Дивіться forums.dropbox.com/topic.php?id=17631
Йохан Олгот

- заміняє на увазі - часткове дивіться: linux.die.net/man/1/rsync
Ray Hulha

Відповіді:


12

Це ніколи не буде швидким, тому що rsync повинен буде прочитати / перевірити суму всього файлу, а читання 500 ГБ забирає багато часу, якщо ви не збережете його на SSD-дисках чи що-небудь.

Спробуйте rsync -vhz --partial --inplace <file/server stuff>.

-cозначає, що він перевіряє суми всього файлу перед тим, як робити передачі, а не використовувати позначку часу, щоб перевірити, чи він змінений, що означає читання всього файлу двічі. Якщо позначка часу не змінюється (слід), ви можете просто touchстворити файл перед запуском rsync.

Якщо це не сценарій, ви можете додати, --progressщоб ви могли бачити, як це працює під час запуску.


Так, я знаю, "великий файл == тривале оброблення". Але я відчуваю, що мені чогось тут не вистачає, дивіться коментар вище. Якщо Dropbox може це зробити, ми можемо! =) Я не сказав, але я також намагався без -c, все ще повільно.
Йохан Аллгот

2
також --inplaceмає на увазі--partial

2

Хоча це не rsync, залежно від того, що ви намагаєтеся зробити це, може працювати краще. Я робив подібне завдання резервного копіювання, і це було, безумовно, швидше.

Використовуйте сітку для виготовлення дьогтю з однієї машини на іншу.

На вашій вихідній машині:

tar -cpv --atime-preserve=system . | nc -q 10 -l -p 45454

Ви створюєте тарбол із збереженням дозволів та часу, а потім переносите його в netcat на порт 45454

На вашій резервній машині

nc -w 10 X.X.X.X 45454 | tar -xpv

X.X.X.X = локальна ip-адреса вашої вихідної машини.

Для мене це добре працювало. Він працював зі швидкістю 25-30 Мб / с по дротовій локальній мережі на відміну від 2-3 Мб / с при rsync. Недоліком є: він не синхронізується, він просто робить копію того, що є у вашому джерелі. Для резервної копії, як ви описуєте, - один файл 500 ГБ - він може працювати дуже добре.

Вам, можливо, доведеться зробити це як root, щоб уникнути проблем з дозволом, або ви можете пощастити.

FWIW, я спочатку дізнався про це тут: http://www.screenage.de/blog/2007/12/30/using-netcat-and-tar-for-network-file-transfer/


1
tarкраще, ніж rsyncколи у вас є маса невеликих файлів для передачі. Використання ncтакож покращує швидкість передачі даних при швидкому з'єднанні, оскільки у вас немає накладних витрат шифрування SSH (що мені не потрібно для однорангового з'єднання)
jornane

0

Щоб уникнути накладних витрат на мережу, просто використовуйте протокол rsync, а не SSH. За замовчуванням rsync використовує SSH, коли вказує URL-адресу, наприклад, ім'я хоста: / шлях. Замість цього використовуйте rsync: // ім'я хоста / шлях, щоб використовувати швидший протокол rsync. Ніяких хитрощів з дьогтем / сіткою не потрібно таким чином. Алгоритм дельти rsync повинен бути набагато швидшим.

Дивіться також https://gergap.wordpress.com/tag/rsync/ для отримання додаткової інформації.

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