Bien, entonces.
Si hay más de un archivo en el directorio, gzip < /.../*.qcow2
intentaría redirigir la entrada de gzip
desde todos ellos. Eso no es posible, entonces Bash da un error. Funcionaría si el patrón solo coincidiera con un archivo.
En el segundo, tienes for f in /var/lib/libvirt/images
. Bueno, for
itera sobre las palabras enumeradas, y aquí hay solo una. No itera sobre el contenido de un directorio por sí mismo :, también se puede usar para otras cosas, como for s in foo bar blah ; do echo $s ; done
. Por lo tanto, debe decirle explícitamente al shell que expanda todos los nombres de archivo allí mediante el uso de un patrón comodín. for f in /var/lib/libvirt/images/*.qcow2
ejecutaría el ciclo una vez para cada archivo cuyo nombre termine en .qcow2
, con f
manteniendo el nombre del archivo.
Ahora, eso debería hacer que el gzip
al menos funcione. Aunque todavía me pregunto si realmente desea dejar de lado los nombres de los archivos originales al hacer la copia de seguridad.
Podrías hacer algo como esto:
gzip -k "$f" && mv "$f.gz" /root/bin/backup/full/
gzip
por defecto crea un archivo comprimido con la extensión .gz
añadida al nombre del archivo original. Por lo general, también elimina el original, pero -k
le dice que lo conserve. Luego alejamos la copia comprimida. entonces foo.qcow2
se convertiría en foo.qcow2.gz
en el directorio de respaldo.
Aunque si el directorio de copia de seguridad está en un sistema de archivos diferente (como debería ser ), lo anterior implica escribir el archivo comprimido dos veces. Algunas manipulaciones de cadenas en el shell podrían evitar eso:
gzip "$f" > "/root/bin/backup/full/${f##*/}.gz"
Por supuesto, también podría usar tar
para archivar todo el directorio a la vez, pero con imágenes de VM que pueden ser un poco difíciles de usar, ya que no hay acceso aleatorio para extraer archivos individuales de un archivo tar comprimido.
/proc
, а также /sys
существуют только в памяти и являются виртуальными, поэтому их нельзя скопировать!
These are pseudo−filesystems because they exist totally in memory; if you look at the disk partition when the system is not running, there will be only an empty directory which is used as a mount point.
Значит ошибка абсолютно нормальная!