відновити копію файлу Linux


9

Як відновити копію великого файлу в Linux? У мене величезний файл (сервісні гігабайти), частково скопійований на мережевий диск, і це зайняло багато часу, і це було зроблено в основному до того, як операція копіювання припинилася через мережеву проблему, яка зараз виправлена. Як відновити копію файлу. Я не хочу неефективного сценарію, і ecp не працював (він, здається, не працює для великих файлів).

Відповіді:


4

Я б спробував rsync -a /from/file /dest/file.


1
і поки ми говоримо про rsync, зауважте, що ви можете скопіювати безпосередньо на будь-яку віддалену машину [підтримуючу SSH], використовуючи rsync -az -e ssh / from / file user@dest.ation: / full / dest / path
Mikeage

2
Ого. запускаючи rsync так, без будь-яких параметрів буде видалено / dest / файл та повторно передавати всю річ. Як за це проголосували?
Джастін

1
Як допомагає збереження атрибутів файлу (-a)? Чи повинно це бути --додавати?
Malvineous

3

Якщо ви знаєте, що вам просто потрібно додати до локального файлу і не хочете використовувати rsync (що потенційно може зайняти довгий час обчислення контрольних сум), ви можете скористатися curl. Наприклад, якщо у вас великий файл на повільному знімному USB-накопичувачі, встановлений на, /media/CORSAIR/somefile.datі лише половина знаходиться у поточному каталозі:

curl -C - -O "file:///media/CORSAIR/somefile.dat"


Дякую за підказку, мені довелося скористатися цією порадою, оскільки я копіював із сервера Windows SMB (щоб не було rsync), коли повільне з’єднання було втрачено, і я не хотів завантажувати 500MB спочатку.
MiKy

2

Так, rsync - це шлях. Для мене ми передали дані 100 + ГБ через rsync + ssh. Якщо ви шукаєте справжню резервну копію, переконайтеся, що ви використовуєте параметр -a(archive) для збереження атрибутів файлів (часів, власників, хімічних речовин тощо)

host1> rsync -aP file user@host2:/path/to/new/dir/

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

PS Використання v(багатослівне) може уповільнити передачу багатьох файлів.


2

Команда, яку ви хочете, буде чимось на зразок

rsync -v --append /path/to/afile /mnt/server/dest/afile

якщо ви не можете отримати доступ до сервера через ssh і запустити rsync таким чином, в такому випадку найкращою є команда FlyingFish.


0

rsync корисний лише в тому випадку, якщо у вас є rsync на сервері призначення. У цьому випадку це справді найкраще рішення.

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

Якщо у вашої вихідної машини є веб-або ftp-сервер, ви можете використовувати wget з цільового сервера за допомогою опції "--continue". (або згортається за допомогою параметра "--continue-at [- | size]").

Якщо ваша машина призначення має FTP-сервер, ви можете використовувати curl на вихідній машині за допомогою параметра --append.

В крайньому випадку, ви можете використовувати dd з аргументами "bs =" (розмір блоку), "skip =" і "search =". Наприклад:

Припустимо, ви зможете використовувати 2048 байтових блоків. Якщо ваш цільовий файл наразі складає 2'048'000'000 байт (2 ГБ), це 1'000'000 блоків 2048 байт. Щоб додати решту вихідного файлу до місця призначення, ви можете

dd, якщо = вихідний_файл = призначення_файлу bs = 2048 пропустити = 1000000 шукати = 1000000

Можливо, ви зможете використовувати більший розмір блоку для покращення швидкості передачі. Просто пам’ятайте, щоб вказати розмір блоку з bs =, і що значення для пропуску та пошуку знаходиться в блоках, а не в байтах.


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