Как скопировать большой каталог на внешний жесткий диск Linux

Как скопировать большой каталог на внешний жесткий диск Linux

Я отформатировал внешний жесткий диск объемом 3 ТБ в файловой системе ext4 с помощью fdisk (на самом деле gnu fdisk), смонтировал его в /media/external и пытаюсь скопировать на него весь свой домашний каталог.

Первая попытка, как мне показалось, была успешной, но через некоторое время, когда процесс остановился, я не смог перейти в скопированный домашний каталог с помощью cd. Похоже, cd не удался:

sudo: cd: command not found

Затем я подумал, что, возможно, есть какие-то ограничения для cp, и попробовал снова, используя tar.

cd /from-stuff/
tar cf – . | (cd /to-stuff; tar xvf -)

Я измерил размер своего домашнего каталога, он составил ~100G. Находясь в домашнем каталоге, я запустил:

du -ch | grep total

Я смонтировал его так:

sudo mount -t ext4 /dev/sdd1 /media/external

Обратите внимание, что мне не удалось смонтировать /dev/sddустройство, которое отображается, sudo fdisk -lа /dev/sdd1 — нет.

При форматировании я сделал самые стандартные настройки, 1 раздел, все остальное по умолчанию. Я подтвердил, что форматирование прошло правильно, не имея никаких «ошибок недействительной таблицы разделов». Я новичок в этом, так что, пожалуйста, отнеситесь с пониманием. Я мог случайно выбрать GUID? но не знаю, как это проверить или переформатировать его в то, что может потребоваться.

Есть ли что-то вопиющее, что я сделал неправильно? Может кто-нибудь предложить последовательность fdisk, чтобы действительно убедиться, что все 1 базовый раздел отформатирован как ext4?

Вот моя документация о том, что я сделал для форматирования. Пожалуйста, поясните/дополните, если можете. Возможно, до этого была неудачная попытка gparted:

sudo fdisk /dev/sdb # this will pull up an interactive menu
n       # create a new partition
p       # create a primary partition
[enter] # use default value of 1 for the partition number
[enter] # use default value of 256 for first sector
[enter] # use default value for last sector
w       # write these settings and leave the interactive menu

# make the file system
sudo mkfs.ext4 /dev/sdb1

решение1

  • оsudo: cd: command not found

    Это нормально. cd — встроенная команда оболочки. Это не значит, что целевой каталог не существует. Попробуйте "su - root", если вам нужно быть root, чтобы перейти в этот каталог, а затем cd в целевой каталог.

  • о том, что /dev/sdd не может быть смонтирован

    /dev/sdd — это целый sd-диск (включая его главную таблицу разделов, все, даже неразмеченное пространство). Это не раздел. /dev/sdd1 — его первый раздел. И будьте осторожны: вы показываете, что хотите смонтировать /dev/sdd1, но вы показываете fdisk на /dev/sdb1 (другой диск! /dev/sdb отличается от /dev/sdd)

  • если этот новый диск будет делать резервные копии: вам следует вместо использования tar | ( cd dest ; tar ), который копирует все каждый раз (и не удаляет файлы/каталоги назначения, если они удалены на источнике), вам следует взглянуть на команду rsync. Особенно локально (но также при копировании в удаленное местоположение, поскольку rsync копирует только измененные части каждого измененного файла, а не весь файл). Ноостерегатьсяего использование: rsync может быть сложным поначалу. Не используйте опцию "--delete", пока не прочтете о ней побольше, она может стереть исходные или целевые файлы, если у них нет соответствия на другой стороне... см. различные способы указания исходных/целевых каталогов, иногда вы добавляете завершающий "/", иногда нет, в зависимости от того, как вы хотите, чтобы действовал rsync.

решение2

Я предполагаю, что проблема в том, что fdisk не работает с большими дисками. Он был заменен на parted.

Это похоже на fdisk, просто обновлено для новых технологий. Предположим, что диск — /dev/sdb (проверьте с помощью sudo parted -l):

  1. sudo parted /dev/sdb
  2. mklabel (тип gpt)
  3. mkpart (ответы по умолчанию создают один раздел максимального размера)
  4. q для выхода из parted
  5. sudo mkfs.ext4 /dev/sdb1для создания файловой системы.

После этого это должно быть просто вопросом sudo mount /dev/sdb1 /media/external. Было бы хорошей идеей убедиться, что вы являетесь владельцем каталога с помощьюsudo chown tarabyte.tarabyte /media/external

Я обычно использую rsyncдля больших копий, даже локальных. Он имеет лучший вывод и легко возобновляется, если есть прерывания.

rsync -avh --progress /from-stuff /to-stuff

man rsyncБолее подробную информацию см .

Связанный контент