Je suis en train de planifier la migration des données de mes utilisateurs d’un volume vers un autre. Cependant, nous avons des règles de quotas individuelles qu’il va falloir conserver.
En regardant la page man de la commande setquota, j’ai identifié cette ligne :
-b, --batch
Read information to set from stdin (input format is name block-softlimit block-hardlimit inode-softlimit inode-hardlimit ). Empty lines and lines starting with # are ignored.
Concrètement, cela signifie qu’il est simple d’importer en masse des règles de quota. Il ne reste donc plus qu’à les exporter.
Je pensais trouver une option qui ferais cela tout seul avec une commande comme quota ou repquota, mais non. Tant pis, il va falloir scripter.
Essayons :
repquota -v /mnt/racine_du_fs_source
*** Rapport pour les quotas user sur le périphérique /dev/mapper/fs-source
Période de sursis bloc : 7days ; période de sursis inode : 7days
Limites bloc Limites fichier
Utilisateur utilisé souple stricte sursis utilisé souple stricte sursis
----------------------------------------------------------------------
root -- 59877676 0 0 168013 0 0
(...)
Statistiques :
Total des blocs : 31
Blocs de données : 22
Entrées : 460
Moyenne d'utilisation : 20,909090
Il va donc falloir supprimer les 5 premières lignes :
repquota -v /mnt/racine_du_fs_source | tail -n +6
root -- 59877676 0 0 168013 0 0
(...)
Statistiques :
Total des blocs : 31
Blocs de données : 22
Entrées : 460
Moyenne d'utilisation : 20,909090
Et enlever les 7 dernières :
repquota -v /mnt/racine_du_fs_source | tail -n +6 | head -n -7
root -- 59877676 0 0 168013 0 0
(...)
Il ne reste plus qu’à remettre en forme les colonnes :
repquota -v /mnt/racine_du_fs_source | tail -n +6 | head -n -7 | awk '{printf("%s %s %s %s %s\n", $1, $4, $5, $7, $8)}'
root 0 0 0 0
(...)
Et pour finir, on migre les règles de quota utilisateurs ET groupes :
repquota -v /mnt/racine_du_fs_source | tail -n +6 | head -n -7 | awk '{printf("%s %s %s %s %s\n", $1, $4, $5, $7, $8)}' | setquota -b /mnt/racine_du_fs_destination
repquota -gv /mnt/racine_du_fs_source | tail -n +6 | head -n -7 | awk '{printf("%s %s %s %s %s\n", $1, $4, $5, $7, $8)}' | setquota -bg /mnt/racine_du_fs_destination