3 votos

cómo llenar una de 64 gb de la tarjeta SDXC con archivos aleatorios

Necesito crear nada menos que 64 gb de archivos con un tamaño de entre 30 y 50 MB para evaluar la copia de un gran número de archivos de una tarjeta SDXC a un disco duro externo. Así que tengo un par de archivos para tratar con.

Me imagino que podría crear un número arbitrario de archivos (puede ser al azar bytes) con un tamaño de archivo entre x MB y MB y que en total no se tapa con un tamaño de z GB en OSX?

Es fácil de hacer en la terminal de un no-programador?

6voto

creidhne Puntos 176

64 GB de archivos, de 30 a 50 MB cada uno

En primer lugar, hay un par de formas para crear archivos de gran tamaño. Este comando crea un 30 MB archivo de ceros muy rápidamente.

dd if=/dev/zero of=file.dat count=30 bs=1048576

Este comando crea un 50 MB archivo de bytes aleatorios. No es tan rápido como un archivo de ceros.

dd if=/dev/urandom of=file.dat count=50 bs=1048576

Aquí están algunos otros comandos útiles para este proyecto.

jot -r 1 30 50             # makes a random number between 30 and 50
du -sm . | awk {'print $1'} # finds the size in MB for the current folder

Secuencia de comandos de Shell

Selección de archivos de ceros (es más rápido), y poner todo junto en un script de shell:

#!/bin/sh
min=1          # minimum file size
max=1          # maximum file size
limit=1        # limit of total files size
filetype="dat" # filetype
folder="."     # folder to put files in
zeros=1        # fill with zeros or random bytes?

while getopts ":h:n:m:l:f:t:z:" opt; do
  case $opt in
    h) echo "-n {min. file size in MB} -m {max. file size in MB} -l {limit of total size of all files in GB} -t {string filetype without dot ex.: 'jpg'}-z {1 = fill with zeros | 0 = fill with random bytes (slower) }"
    ;;
    n) min="$OPTARG"
    ;;
    m) max="$OPTARG"
    ;;
    l) limit="$OPTARG"
    ;;
    f) folder="$OPTARG"
    ;;
    t) filetype="$OPTARG"
    ;;
    z) zeros="$OPTARG"
    ;;
    \?) echo "Invalid option -$OPTARG" >&2
    ;;
  esac
done

if [ $zeros -eq 1 ]
then
  source=/dev/zero
else
  source=/dev/urandom
fi

n=1                                      # count files
lm=$((($limit*1000)-($max-1)))           # real total file size limit
sz=`du -sm "$folder" | awk {'print $1'}` # size of folder in MB

while [ $sz -lt $lm ];
do
   cnt=`jot -rn 1 $min $max`;
   dd if=$source of=$folder/file$n.$filetype count=$cnt bs=1048576 2> /dev/null;
   status=$?;
   if [ $status -eq 0 ]; then
      echo file$n.$filetype $cnt MB;
   else
      echo write file$n.$filetype failed;
      exit $status;
   fi
   let n=n+1;
   sz=`du -sm "$folder" | awk {'print $1'}`;
done
exit;
  • n cuenta los archivos de modo que cada archivo tiene un nombre diferente
  • cnt es un número aleatorio a partir de $min $max que el dd comando se utiliza para hacer que un archivo de entre $min MB y $max MB

Copie la secuencia de comandos y pegar en una nueva edición de texto de la ventana. Seleccione Format->Make Plain Text de la barra de menú. Guarde el archivo en el Escritorio y el nombre random_data_files.sh.

La creación de los archivos

Abrir un Terminal ventana y ejecutar estos comandos:

cd ~/Desktop
chmod a+x random_data_files.sh

Hacer una carpeta o montar una tarjeta SDXC. cd a la carpeta o tarjeta. Ejecute la secuencia de comandos de shell.

~/Desktop/random_data_files.sh -n 30 -m 50 -l 64 -t jpg -f {your_folder}

La secuencia de comandos se crean aproximadamente 1.600 archivos (a veces más, a veces menos) para el de 64 GB de 30 a 50 MB de archivos. Abrir otra ventana de Terminal en la misma carpeta o en la tarjeta, y el uso de:

du -h

para ver el progreso de la secuencia de comandos. Por favor comentar si algo no está claro o si usted tiene un problema.

3voto

WGroleau Puntos 255

Suplente:

mkfile -v $(echo "$((30+$RANDOM*20/32767))")m "/tmp/$(date)"
sleep 1

En mi SSD, el sueño se asegura de que 'fecha' no se repita el nombre de archivo, como el mkfile tarda de 100 a 200 milisegundos. Los archivos son todos ceros. La -v hace que te dice el tamaño del archivo.

Repita esto hasta que usted consigue un dispositivo completo del mensaje de error.

'dd' toma sólo un 15 a 20 milisegundos para todos los ceros y de tres a cinco segundos para que la variación aleatoria.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X