web-dev-qa-db-fra.com

mksquashfs n'exclut pas le fichier

J'ai des problèmes pour exclure un fichier spécifique d'un squashfs. Je veux pouvoir exclure tous les types de fichiers se terminant par * .db mais je n'ai pas eu de chance.

Chaque fois que j'exécute la commande mksquashfs avec les arguments pour exclure le fichier, il inclut toujours le fichier. J'ai essayé de nombreuses variantes de la commande. Mon script de test est ci-dessous:

#!/bin/bash

OPT="-regex -e '*.db' "

echo -e "Creating squashfs..."
mksquashfs test test.package ${OPT}
echo "Ran the following command: mksquashfs pf test.package ${OPT}"

echo -e "Uncompressing squashfs..."
mkdir pf_post
unsquashfs -f -d test_post/ test.package 

echo
read -p "press any key to continue..."

rm test.package
rm -r test_post

L'arborescence du répertoire de test est ci-dessous. Les deux instances de test.db doivent être exclues mais cela ne semble pas fonctionner.

test
├── test
│   └── test.db
├── test.ab
├── test.cd
├── test.db
├── test.ef
├── test.gh
└── test.sh
1
tardis89

On a répondu à ma question à https://stackoverflow.com/questions/45555796/mksquashfs-not-excluding-file

J'ai dû utiliser des caractères génériques à la place avec le ... ajouté devant mon exclusion comme indiqué ci-dessous. Il est très important d'inclure un espace entre les ... et le *.db, sinon cela ne fonctionnera pas. Je crois que j'avais déjà essayé cette méthode sur recommandation, mais je ne savais pas quand je l'ai essayée qu'il y avait un espace entre ces deux.

mksquashfs test test.package -wildcards -e '... *.db'
0
tardis89

Ainsi, la ligne de commande (non enveloppée) en question se lit comme suit:

mksquashfs test test.package -regex -e '*.db'

Le problème est que vous n'utilisez pas l'expression régulière, vous utilisez un caractère générique Shell. Conformément à la page de manuel de mksquashfs, l'option -regex Permet l'utilisation d'expressions régulières POSIX et -wildcards Permet d'utiliser des caractères génériques Shell étendus (globbing) pour exclure les répertoires/fichiers ". Donc, remplacez simplement -regex Par -wildcards Dans cette ligne de commande et cela devrait fonctionner.

0
TiGR