Como copiar um diretório grande para um disco rígido externo Linux

Como copiar um diretório grande para um disco rígido externo Linux

Formatei um disco rígido externo de 3 TB como ext4 usando fdisk (na verdade gnu fdisk), montei-o em /media/external e estou tentando copiar todo o meu diretório inicial para ele.

Achei que minha primeira tentativa foi bem-sucedida, mas depois de um tempo, quando o processo parou, não consegui fazer o cd no diretório inicial copiado. cd pareceu falhar:

sudo: cd: command not found

Então pensei que poderia haver algum limite para cp e tentei novamente usando tar.

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

Medi o tamanho do meu diretório inicial em aproximadamente 100G. Quando estava no meu diretório inicial, executei:

du -ch | grep total

Eu montei como:

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

Observe que não consegui montar /dev/sddo que aparece sudo fdisk -lenquanto /dev/sdd1 não.

Ao formatar eu fiz a configuração mais padrão, 1 partição, padrão todo o resto. Confirmei a formatação correta por não ter nenhum 'erro de tabela de partição inválida'. Eu sou novo nisso, então, por favor, tenha paciência. Posso ter escolhido acidentalmente o GUID? mas não sei como verificar isso ou reformatar isso para o que for necessário.

Há algo evidente que eu fiz incorretamente? Alguém pode oferecer uma sequência fdisk para realmente garantir que tudo seja uma partição básica formatada como ext4?

Aqui está minha documentação sobre o que fiz para formatar. Por favor, esclareça/aumente se puder. Pode ter havido uma tentativa falhada do gparted antes disso:

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

Responder1

  • sobre asudo: cd: command not found

    Esse é normal. cd é um shell embutido. Isso não significa que o diretório de destino não exista. Tente "su - root" se você precisar ser root para ir para esse diretório e, em seguida, faça cd para o destino.

  • sobre o fato de /dev/sdd não poder ser montado

    /dev/sdd é um disco SD inteiro (incluindo sua tabela mestre de partitino, tudo, até mesmo o espaço não particionado). Não é uma partição. /dev/sdd1 é sua primeira partição. E cuidado: você mostra que deseja montar /dev/sdd1 , mas mostra um fdisk em /dev/sdb1 (outro disco! /dev/sdb é diferente de /dev/sdd)

  • se essa nova unidade for fazer backups: você deveria, em vez de usar tar | ( cd dest ; tar), que copia tudo todas as vezes (e não exclui arquivos/diretórios de destino se eles forem excluídos na origem), você deve examinar o comando rsync. Especialmente localmente (mas também ao copiar para um local remoto, pois o rsync copiará apenas as partes alteradas de cada arquivo alterado, não a totalidade do arquivo). Mascuidadoseu uso: o rsync pode ser complicado no início. Não use a opção "--delete" antes de ler muito sobre isso, pois pode acabar com os arquivos de origem ou destino se eles não corresponderem no outro lado... veja as diferentes maneiras de especificar diretórios de origem/destino, às vezes você adicionará o "/" final, às vezes não, dependendo de como você deseja que o rsync atue.

Responder2

Suponho que seu problema é que o fdisk não faz discos grandes. Foi substituído por parted.

É semelhante ao fdisk, apenas atualizado para tecnologias mais recentes. Supondo que o disco seja /dev/sdb (verifique com sudo parted -l):

  1. sudo parted /dev/sdb
  2. mklabel (tipo gpt)
  3. mkpart (as respostas padrão criam uma partição de tamanho máximo)
  4. q para sair separado
  5. sudo mkfs.ext4 /dev/sdb1para fazer o sistema de arquivos.

Depois disso, deve ser apenas uma questão de sudo mount /dev/sdb1 /media/external. Seria uma boa ideia certificar-se de que você possui o diretório primeiro comsudo chown tarabyte.tarabyte /media/external

Costumo usar rsyncpara cópias grandes, mesmo locais. Tem melhor saída e retoma facilmente se houver interrupções.

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

Veja man rsyncpara mais informações.

informação relacionada