Estoy tratando de copiar un directorio con una gran cantidad de archivos a otro destino. Yo hice:
cp -r src_dir another_destination/
Entonces quería confirmar que el tamaño del directorio de destino es el mismo que el original:
du -s src_dir
3782288 src_dir
du -s another_destination/src_dir
3502320 another_destination/src_dir
Luego pensé que podría haber varios enlaces simbólicos que no fueran seguidos por el cpcomando y agregué la -abandera:
-a Igual que las opciones -pPR. Conserva la estructura y los atributos de los archivos, pero no la estructura del directorio.
cp -a src_dir another_destination/
pero du -sme dio los mismos resultados. Es interesante que tanto el origen como el destino tengan la misma cantidad de archivos y directorios:
tree src_dir | wc -l
4293
tree another_destination/src_dir | wc -l
4293
¿Qué estoy haciendo mal que obtengo diferentes tamaños con el ducomando?
ACTUALIZAR
Cuando intento obtener tamaños de directorios individuales con el ducomando obtengo resultados diferentes:
du -s src_dir/sub_dir1
1112 src_dir/sub_dir1
du -s another_destination/src_dir/sub_dir1
1168 another_destination/src_dir/sub_dir1
Cuando veo archivos con ls -la, los tamaños de archivo individuales son los mismos pero los totales son diferentes:
ls -la src_dir/sub_dir1
total 1168
drwxr-xr-x 5 hirurg103 staff 160 Jan 30 20:58 .
drwxr-xr-x 1109 hirurg103 staff 35488 Jan 30 21:43 ..
-rw-r--r-- 1 hirurg103 staff 431953 Jan 30 20:58 file1.pdf
-rw-r--r-- 1 hirurg103 staff 126667 Jan 30 20:54 file2.png
-rw-r--r-- 1 hirurg103 staff 7386 Jan 30 20:49 file3.png
ls -la another_destination/src_dir/sub_dir1
total 1112
drwxr-xr-x 5 hirurg103 staff 160 Jan 30 20:58 .
drwxr-xr-x 1109 hirurg103 staff 35488 Jan 30 21:43 ..
-rw-r--r-- 1 hirurg103 staff 431953 Jan 30 20:58 file1.pdf
-rw-r--r-- 1 hirurg103 staff 126667 Jan 30 20:54 file2.png
-rw-r--r-- 1 hirurg103 staff 7386 Jan 30 20:49 file3.png
fuente

ls -laresultados. Ver ACTUALIZACIÓNcpson exactamente tan grandes como deben ser.ls -lspara ver cuánto espacio en disco están usando los archivos.Respuestas:
Esto se debe a que,
dude manera predeterminada, no muestra el tamaño de los archivos, sino el espacio en disco que están utilizando. Debe usar la-bopción para obtener la suma de los tamaños de archivo, en lugar del total del espacio en disco utilizado. Por ejemplo:Aunque el archivo tiene solo 7 bytes de longitud, ocupará un total de 4096 bytes de espacio en disco (en mi ejemplo particular; variará según el sistema de archivos utilizado, el tamaño del clúster, etc.).
Además, algunos sistemas de archivos admiten los llamados archivos dispersos, que no utilizan ningún espacio en disco para bloques que son todos ceros. Por ejemplo:
En resumen, para verificar que todos los archivos fueron copiados, usaría en
du -sblugar dedu -s.fuente
dusalida: eso haría que los archivos comprimidos se vean dispersos para los programas que usan el algoritmo habitual de longitud! = bloques usados. btrfs.wiki.kernel.org/index.php/…Puede deberse al tamaño del directorio "archivos".
En la mayoría de los sistemas de archivos, en el disco, un directorio es muy parecido a un archivo normal (con solo una lista de nombres y números de nodo, en su mayoría), utilizando más bloques a medida que crece.
Si agrega muchos archivos, el directorio en sí crece. Pero si luego los elimina, en muchos sistemas de archivos, el directorio no se reducirá.
Entonces, si uno de los directorios de su árbol original tenía muchos archivos en algún momento, que luego se eliminaron, la copia de ese directorio será "más pequeña", ya que solo usa tantos bloques como sea necesario para la cantidad actual de archivos.
En los listados de su actualización, hay 3 directorios que no ha enumerado. Compare el tamaño de esos (o descendientes de esos) en su
ls -alsalida.Para encontrar la diferencia, puede probar un
ls -alren ambos directorios, redirigido a un archivo y luego unadiffde las dos salidas.fuente
cp -a src_dir another_destination/, es poco probable, yaanother_destionationque se crearía nuevamente y, por lo tanto, se optimizaría, mientrassrc_dirque (que podría haber tenido algunos directorios más grandes de creaciones / adiciones anteriores) podría ser más grande de lo necesario. Sin embargo, los resultados muestran que ensrc_dirrealidad es más pequeño (1112 < 1168).> In the listings in your update, there are 3 directories you haven't listed. En realidad son archivos, no directorios. ver los nombres de los archivos> if one of the directories in your original tree had many files at some point, which were later deleted. Copié el directorio fuente de un servidor remoto con el comando rsync y no.entradas muestran 5 enlaces en el inodo. Uno es el enlace del directorio principal a este. Otro es.. Hay 3 enlaces más, que deberían ser..enlaces de subdirectorios. A menos que me falte algo muy extraño, debe haber 3 subdirectorios en ellos. ¿Estás diciendo que esos listados son la salida completa?