Tengo un disco duro USB.
Quiero montarlo con la compresión habilitada. Puedo hacerlo en el fstab de mi sistema o incluso usando reglas udev. El problema es que no montaré mi HDD USB solo en mi computadora. Hasta ahora, solía activar un terminal cada vez que lo montaba.
Luego, descubrí chattr +c
. Esto funciona muy bien pero Quiero usar LZO en lugar de ZLIB. ¿Hay alguna forma para ser más específico y definir el algoritmo de compresión de una vez por todas?
Respuesta
btrfs comprimirá cada archivo cambiado desde que fue montado si usa:
mount -o compress-force=lzo /dev/btrfsdev /mnt/btrfsmnt
Si quiere asegurarse de que TODOS los archivos se comprimen de esta manera, tengo un pequeño script que escribí para hacerlo …
du -ht +$((1024*1024)) "$HOME" |\ sed -rn "s/^[^/]*(.*)/btrfs fi defrag -fvclzo "\1"/p" |\ sudo sh -n
Lo anterior solo funciona en mi directorio $HOME
, pero puedes usarlo en cualquier cosa o todo lo que quieras. También tiene el operando -n
alimentado a sh
como está puedes ver por ti mismo lo que sh
es actualmente not
antes de eliminarlo para indicarle que lo haga.
De todos modos, primero consulta du
para archivos en human-readable
formato (probablemente redundante aquí ya que lo eliminamos en el siguiente paso de todos modos) que sean más grandes que 1MB
o $((1024*1024)).
Es |pipes
su información a sed
que quita todo antes del /, "quotes"
inicial del nombre de archivo, crea el comando btrfs filesystem defragment -verbose -flush-to-disk -compress-lzo \filename
y le entrega un |pipe
a sudo sh
para que lo ejecute.
Una vez más, no hará nada mientras sh --no-execute
esté en efecto.
Creo que algunos muy construcciones de herramientas de espacio de usuario btrfs
muy recientes desfragmentan directorios completos de forma recursiva, pero si es así, es algo bastante nuevo, así que Siempre tenía que hacer cosas como esta.
Comentarios
Respuesta
Por lo que leí, puede establecer la propiedad compression
en la raíz del subvolumen para lograr esto [0, 1]:
sudo btrfs property set /mnt/your-subvolume compression lzo
Después de obtener el UUID del subvolumen Btrfs con sudo btrfs filesystem show /mnt/your-subvolume
, puede validar que la función de compresión LZO esté actualmente habilitada con:
cat /sys/fs/btrfs/<UUID>/features/compress_lzo
Debería devolver 1 si está habilitada.
[0] https://btrfs.wiki.kernel.org/index.php/Compression
[1] https://www.berthon.eu/2016/setting-shared-folder-compression-on-synology-nas-btrfs/
compress=lzo
es suficiente, no ' no es necesario volver a comprimir archivos binarios comprimidos como PNG.