Для простого переноса / home на другой диск я использую, cp -a
что мне кажется очень медленным способом. Хотелось бы узнать более эффективный способ выполнения задачи. Я / home смонтирован как логический том, но целевой диск не является системой LVM
9
cp
это медленно, другие методы тоже будут медленными. Если только это не файлово-ориентированное копированиеnoatime
опцию монтирования, чтобы уменьшить ненужные записи, особенно в исходную файловую систему.Ответы:
Попробуйте
tar
,pax
,cpio
, с чем - то буферизацией.Я предлагаю
bsdtar
вместо того, чтобы,tar
по крайней мере, в некоторых дистрибутивах Linuxtar
есть GNU tar, который в отличие отbsdtar
(fromlibarchive
) не обрабатывает сохранение расширенных атрибутов, ACL или атрибутов linux.pv
буферизует до 500 МБ данных, так что может лучше учитывать колебания скорости чтения и записи в двух файловых системах (хотя в действительности у вас, вероятно, будет диск медленнее, чем другая, и механизм обратной записи ОС будет выполнять эту буферизацию как ну, так что это, вероятно, не будет иметь большого значения). Старые версииpv
не поддерживают-a
(для отчетов о средней скорости), вы можете использовать ихpv -B 200M
там в одиночку.В любом случае, у тех не будет ограничений
cp
, что делает чтение и запись последовательно. Здесь у нас есть дваtar
работающих одновременно, поэтому один может прочитать одну ФС, а другая занята, ожидая, пока другая ФС завершит запись.Для ext4, и если вы копируете на раздел, который по крайней мере такой же большой, как и исходный, посмотрите также, как
clone2fs
это работаетntfsclone
, то есть копирует только выделенные блоки и последовательно, поэтому ротационное хранение, вероятно, будет наиболее эффективным.Partclone обобщает это на несколько разных файловых систем.
Теперь несколько вещей, которые необходимо учитывать при клонировании файловой системы.
Клонирование будет копировать все каталоги, файлы и их содержимое ... и все остальное. Теперь все остальное варьируется от файловой системы к файловым системам. Даже если мы рассмотрим только общие черты традиционных файловых систем Unix, мы должны учитывать:
Тогда, если вы рассмотрите
ext4
и большинство файловых систем Linux, вам придется рассмотреть:SELinux
)Не все инструменты поддерживают все это, или когда они делают, вы должны включить его явно, как
--sparse
,--acls
... параметрыrsync
,tar
... И при копировании в другие файловые системы, вы должны рассмотреть случай, когда они не делают Поддержите тот же набор функций.Возможно, вам также придется учитывать атрибуты файловой системы, такие как UUID, зарезервированное пространство для root, частота fsck, поведение журналирования, формат каталогов ...
Кроме того, существуют более сложные файловые системы, в которых невозможно скопировать данные путем копирования файлов. Рассмотрим, к примеру,
zfs
илиbtrfs
когда вы можете сделать снимки подразделов и разветвить их ... У них будут свои собственные специальные инструменты для копирования данных.Байт-байтовая копия блочного устройства (или, по крайней мере, выделенных блоков, когда это возможно) часто является наиболее безопасной, если вы хотите убедиться, что вы копируете все. Но остерегайтесь проблемы коллизии UUID, и это подразумевает, что вы копируете на что-то большее (хотя вы можете изменить размер копии снимка источника перед копированием).
источник
--acls
опция для сохранения ACL в архиве. И я был бы удивлен, если бы инопланетный (своего рода) инструмент, вроде бы,bsdtar
справлялся с этим лучше, чем (по сути) родной ...tar
для Linux (star
,bsdtar
,tar
), я не знаю , что GNU деготь лучше , чем другие. Выбор инструментов GNU обычно более политический, чем технический (см., Напримерbash
).--acls
Я рекомендую rsync, например:
Или передать со сжатием:
источник
rsync
как правило, намного медленнее, чемcp
илиtar|tar
rsync
наиболее эффективен, если у вас уже частично есть исходные данные, доступные на томе назначения, потому что он будет передавать только отсутствующие / измененные данные. Я бы не стал использовать его для быстрой «первой копии».