Как скопировать том Mac с помощью cp?

13

Я исследовал это в течение нескольких часов. В однопользовательском режиме я использовал:

cp -Rpvn /* /Volumes/MyBackup

Мой внешний USB установлен на /Volumes/MyBackup

Проблема, однако, в том, что после 24 часов он все еще не перестал копировать 300 ГБ данных на внешний USB-накопитель. Я думаю, что это имеет проблемы с символическими ссылками, такими как /Volumes/MacHDобъем, также имеющий, /Volumes/MacHDи /Volumes/MyBackupя не уверен в этом как бы то ни было.

Как скопировать том Mac с помощью cp? Является ли cp -Rpvn /* /Volumes/MyBackup правильным?

ermSO
источник
2
Вы используете cp как это, но это не правильный инструмент для работы. Вам нужен rsync для этого.
Кузен Кокаин
1
У вас есть возможность запустить ваш Mac в режиме целевого диска? Или просто выскочить HD?
Кузен Кокаин
Я не могу сделать целевой режим, так как у меня нет второго Mac. Я надеялся на менее рискованный вариант, чем вывозить диск.
ermSO
rsync, вероятно, ваш лучший вариант, хотя я думаю, что вы также можете использовать его ddдля создания побайтной копии жесткого диска вашего Mac.
thibmaek
1
ddэто способ создания резервных копий по секторам, что похоже на то, что вы здесь делаете (но будьте очень осторожны с этим, чтобы убедиться, что то, что вы перезаписываете, действительно то, что вы хотите перезаписать). rsyncэто способ делать сложные или большие операции копирования. cpотлично подходит для отдельных файлов, но не подходит для крупномасштабных операций.
cpast

Ответы:

25

Используйте rsyncдля этой цели, поскольку cpне можете точно воспроизвести все файлы, которые существуют в OS X. Преимущества rsyncболее dittoи cpявляются:

  • прерванные передачи могут легко возобновиться с очень небольшими затратами.
  • перезапускает даже возобновить часть пути через большой файл.
  • Исключение файлов и --dry-run позволяют легко тестировать и выполнять многократное прореживание.

Самый простой способ использовать rsyncи сохранить большинство вещей (разрешения, символические ссылки, даты редактирования и т. Д.) - это использовать флаг -aили --archiveдля архивирования. Чтобы увидеть ваш прогресс использования -Pили--progress

Rsync работает как:

rsync options source destination

В вашем случае я бы порекомендовал следующее:

rsync --archive --verbose --one-file-system --human-readable --progress /from/ /to

Или вкратце:

rsync -avxhP /from/ /to

Помните об отсутствии косой черты в /toлокации.

смотрите комментарии для более полезных флагов

CousinCocaine
источник
6
Вы также хотите флаг -x, чтобы избежать обращения к подключенным дискам, которые не находятся на том же томе.
Кент,
Спасибо за bmike за то, что сделали этот пост более читабельным.
Кузен Кокаин
2
-Pна самом деле эквивалентно как --progressи в --partialсочетании. Смотрите справочную страницу .
Кирб
1
Я бы пропустил --compress(это полезно только для сетевых передач) и добавил -E(сохранив расширенные атрибуты и ветвления ресурсов).
Гордон Дэвиссон
5

Если вы хотите сделать точную копию содержимого файловой системы, избегайте использования cp. Вместо этого используйте ditto(1)команду, которая сохраняет жесткие ссылки, права доступа к файлам, разветвления ресурсов и метаданные HFS. В отличие cp, dittoпредназначается , чтобы сохранить как можно больше той информации , насколько это возможно по умолчанию.

Это просто вопрос бега .sudo ditto src dest

200_success
источник
Поправьте меня, если я ошибаюсь, но я уверен, что cpбыл обновлен для копирования метаданных файла в 10.4.
NobodyNada - Восстановить Монику
Это было, но dittoвсе еще лучший вариант.
juandesant
1
И rsyncэто лучший вариант.
Кузен Кокаин
2

Вы забыли составить список исключаемых файлов и, вероятно, копируете вещи, которые нельзя / не следует копировать, включая бездонные файлы, такие как / dev / random.

В то время как cp может выполнять эту работу, существуют лучшие инструменты. Rsync - это одно, Carbon Copy Cloner или SuperDuper - другое. Чтобы использовать кухонную аналогию, вы используете нож, чтобы открыть банку. Rsync - консервный нож, Carbon Copy Cloner - электрический консервный нож. Я регулярно использую rsync, но настройки, необходимые для копирования работающей операционной системы, достаточно сложны, я никогда не удосужился сделать все сам.

 cp -Rpvn /* /Volumes/MyBackup 

Похоже, все, что вы хотите сделать, это сделать резервную копию. Ваш Mac включает Time Machine специально для этой цели. Откройте Системные настройки -> Time Machine, выберите внешний диск, включите его и оставьте в покое. Это работает очень хорошо и требует меньше минуты вашего времени.

Павел
источник
Я не могу получить доступ к GUI. Все, что я могу получить, это однопользовательский режим, так что время CCC, superduper и time machine не являются опциями. Какие настройки вы бы использовали с rsync? В идеале я хотел бы загрузочную копию. Я не мог заставить ASR работать.
23
1
@ermSO Поскольку у вас, очевидно, есть внешний диск, установите новую операционную систему на внешнюю, а затем загрузитесь с нее. Все текущие Mac могут загружаться с FireWire или USB. Затем вы можете сделать приличную резервную копию ваших пользовательских файлов, а затем восстановить свой внутренний диск. Я обычно делаю полное удаление в этих случаях, устраняя любые остаточные проблемы с каталогами.
Пол
ddбудет выполнять посекторное копирование в командной строке и является хорошим выбором для копирования всего тома на другой весь том, удаляя весь второй том.
cpast
Вы уверены, что хотите -Rвариант? Это означает, что если у вас есть символические ссылки на одну папку в нескольких местах, вы будете дублировать контент. Это может объяснить, что время уходит. Если вы используете dittoвместо этого, вы получите то, что вы хотите с настройками по умолчанию.
juandesant
1
@juandesant это его команда, а не моя. я бы не использовал cp вообще.
Пол
0

Вы можете создать резервную копию Time Machine из командной строки с tmutilпомощью утилиты Time Machine. Вы можете установить пункт назначения, а затем заказать резервное копирование вручную.

Чтобы установить том резервного копирования Time Machine:

назначение sudo tmutil / Тома / MyBackup

Затем запустите резервное копирование:

tmutil startbackup --auto

--autoФлаг будет пытаться рассматривать его как обычное время запланированного резервного копирования.

Получив резервную копию Time Machine, вы можете переустановить OS X на своем Mac, а затем импортировать все свои файлы из резервной копии Time Machine.

CyberSkull
источник