Cómo copiar un directorio grande a un disco duro externo Linux

Cómo copiar un directorio grande a un disco duro externo Linux

Formateé un disco duro externo de 3 TB como ext4 usando fdisk (en realidad, gnu fdisk), lo monté en /media/external y estoy intentando copiar todo mi directorio de inicio en él.

Pensé que mi primer intento fue exitoso, pero después de un tiempo, cuando el proceso se detuvo, no pude acceder al directorio de inicio copiado. El cd pareció fallar:

sudo: cd: command not found

Entonces pensé que podría haber algún límite para cp y luego intenté nuevamente usando tar.

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

Medí el tamaño de mi directorio de inicio en ~100G. Cuando estaba en mi directorio de inicio, ejecuté:

du -ch | grep total

Lo he montado como:

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

Tenga en cuenta que no pude montar /dev/sddlo que aparece sudo fdisk -lmientras que /dev/sdd1 no.

Al formatear hice la configuración más predeterminada, 1 partición, todo lo demás por defecto. Confirmé que el formateo era correcto al no tener ningún "error en la tabla de particiones no válida". Soy nuevo en esto, así que tengan paciencia. ¿Es posible que haya elegido accidentalmente GUID? pero no sé cómo verificarlo o reformatearlo a lo que sea necesario.

¿Hay algo evidente que hice incorrectamente? ¿Alguien puede ofrecer una secuencia fdisk para asegurarse realmente de que todo sea una partición básica formateada como ext4?

Aquí está mi documentación sobre lo que hice para formatear. Por favor aclare/aumente si puede. Es posible que haya habido un intento fallido de separación antes de esto:

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

Respuesta1

  • acerca desudo: cd: command not found

    Ese es normal. cd es un shell incorporado. Esto no significa que el directorio de destino no exista. Pruebe "su - root" si necesita ser root para ir a ese directorio y luego cd al destino.

  • sobre el hecho de que /dev/sdd no se puede montar

    /dev/sdd es un disco SD completo (incluida su tabla de partición maestra, todo, incluso el espacio no particionado). No es una partición. /dev/sdd1 es su primera partición. Y cuidado: muestra que desea montar /dev/sdd1 , pero muestra un fdisk en /dev/sdb1 (¡otro disco! /dev/sdb es diferente de /dev/sdd)

  • si esa nueva unidad es para hacer copias de seguridad: deberías, en lugar de usar tar | ( cd dest ; tar), que copia todo cada vez (y no eliminará los archivos/directorios de destino si se eliminan en el origen), debe consultar el comando rsync. Especialmente localmente (pero también al copiar a una ubicación remota, ya que rsync solo copiará las partes modificadas de cada archivo modificado, no la totalidad del archivo). Perotener cuidadosu uso: rsync puede ser complicado al principio. No use la opción "--delete" antes de leer mucho sobre esto, podría borrar los archivos de origen o de destino si no coinciden en el otro lado... vea las diferentes formas de especificar directorios de origen/destino, a veces agregará el "/" final, a veces no, dependiendo de cómo desee que actúe rsync.

Respuesta2

Supongo que tu problema es que fdisk no admite discos grandes. Ha sido reemplazado por parted.

Es similar a fdisk, solo que actualizado para incorporar tecnología más nueva. Suponiendo que el disco es /dev/sdb (verifique con sudo parted -l):

  1. sudo parted /dev/sdb
  2. mklabel (tipo gpt)
  3. mkpart (las respuestas predeterminadas crean una partición de tamaño máximo)
  4. q salir partido
  5. sudo mkfs.ext4 /dev/sdb1para hacer el sistema de archivos.

Después de eso debería ser sólo cuestión de sudo mount /dev/sdb1 /media/external. Sería una buena idea asegurarse primero de ser propietario del directorio consudo chown tarabyte.tarabyte /media/external

Yo suelo utilizarlo rsyncpara copias grandes, incluso locales. Tiene un mejor rendimiento y se reanuda fácilmente si hay interrupciones.

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

Consulte man rsyncpara obtener más información.

información relacionada