Sommaire

Nov 18, 2015 - Manipulation de données sur les fichiers

Système de fichier / filesystem

Informations sur les fichiers

  • Avoir le numéro d’inode
$ ls -il
  • Avoir des infos sur un fichier (dont inode) :
$ stat file

Changer l’ordre des champs d’affichage de ls

$ ls -la \
	|awk '{print $5,"-----",$7,"---",$8,"-----",$6}' \
	|sort -n

Tris des fichiers/répertoires par taille croissante

  • version 1
$ du -s * | awk '{print $1,"-----",$1/(1024*1024),"Go","-----",$2}' | sort -n
  • version 2
#!/bin/sh

du -s * | awk '{ {printf "%8s --- %8s Go --- ",$1,$1/(1024*1024)}{for (i=2;i<=NF;i++) { printf "%s ",$i } }{printf "\n"} }' | sort -n

Trouver les 50 plus gros fichiers dans une arborescence

  • version 1
$ find / -type f ! -regex "^/[proc\|dev\|sys]*/.*" -printf "%s %p\n" \
	|sort -rnk1 \
	|head -n50 \
	|awk '{print $1/1048576 "MB" " " $2}'
  • version 2
$ du -s * | awk '{
	{printf "-|"}
	{printf "%8s --- %8s Go --- ",$1,$1/(1024*1024)}
	{printf "|-|"}
	{for (i=2;i<=NF;i++) { printf "%s ",$i }}
	{printf "|-\n"}
	{printf "\n"}
}' | sort -n

  • version 3 (condensé de la v2)
du -s * | awk '{ {printf "%8s --- %8s Go --- ",$1,$1/(1024*1024)}{for (i=2;i<=NF;i++) { printf "%s ",$i } }{printf "\n"} }' | sort -n

du -s * \
	| awk '{ {printf "%8s --- %8s Go --- ",$1,$1/(1024*1024)}{for (i=2;i<=NF;i++) { printf "%s ",$i } }{printf "\n"} }' \
	| sort -n

Encodage

Conversion d’encodage de fichiers en masse

  • utilisation de iconv
#!/bin/sh

# permet la passage de paramère par la console, lorsque ce script est enregistré dans un fichier
#folder=$1
folder=`pwd`

for i in $folder/*
do
	iconv --from-code UTF8 --to-code ISO-8859-15 "$i" -o "${i}_iso885915" --silent
	# pour remplacer la version utf8 par la version iso, décommente la ligne suivante
	#mv "${i}_iso885915" "$i"
done

Licence

logo creative common by-sa 3.0 Creative Commons Paternité – Partage à l’Identique 3.0 non transcrit

Nov 18, 2015 - Suppression massive de fichiers

Suppression de fichiers massive

Lorsque l’on doit supprimer un nombre conséquent de fichier sur des supports avec temps d’accès rapide comme les SSD, il est fréquent d’être limité par l’aspect séquentiel de rm.

Afin de contourner cette limitation et utiliser au mieux les capacité du support et de l’ordonnaceur d’Entrée/Sortie, il est possible de paralléliser les demandes de suppression. Sur un disque dur habituel cette action dégrade les performances mais sur un SSD l’effet est favorable car le controlleur intégré aux SSD bufferise les demandes et les traite en lot.

La méthode pour augmenter le taux de suppression de fichier est de séparer la génération de la liste des fichiers à supprimer (ici avec find) de la suppression (ici avec rm)

find . -type f -print0 | xargs -0 -P10 rm -v

Suppression massive de fichiers avec 10 processus en simultané.

Licence

logo creative common by-sa 3.0 Creative Commons Paternité – Partage à l’Identique 3.0 non transcrit

Aug 1, 2015 - Quassel et base de données

Quassel et base de données

De temps en temps, pour une raison qui m’est encore inconnue, le moteur de quassel quasselcore oublie sa configuration. Il ne sait donc plus qu’il doit délaisser la base sqlite au profit d’une base plus fiable comme Postgresql.

Voici la commande que j’utilise pour que qassel se rappelle de la configuration. Bien sur il faut renseigner les paramètres de connexion (nom d’utilisateur, mot de passe, nom base de données, nom de la machine qui héberge la base).

service quasselcore stop
quasselcore --configdir=/var/lib/quassel --select-backend=PostgreSQL
service quasselcore start

Licence

logo creative common by-sa 3.0 Creative Commons Paternité – Partage à l’Identique 3.0 non transcrit

Apr 28, 2015 - Paquets habituels Ubuntu server

Paquets habituels pour une installation de serveur Ubuntu

L’installation d’un serveur GNU/Linux s’accompagne de l’installation du système d’exploitation ainsi que des utilitaires permettant d’‘utiliser l’ordinateur.

aptitude update 
aptitude install byobu htop atop curl git

Licence

logo creative common by-sa 3.0 Creative Commons Paternité – Partage à l’Identique 3.0 non transcrit