Problème lenteur avec tar

Bonjour,

j’essaye de crée une archive de ma musique à travers mes playlists.

[code]#!/bin/bash

find “$HOME”"/.mpd/playlists" -name “*.m3u” |

while
read -r filename
do
cat “$filename” >> "test.txt"
done

while
read line
do
tar vfr “$HOME”/test/fichier.tar “$line”

done < test.txt

exit[/code]

Donc tous fonctionne comme je le souhaite, sauf qu’à partir de 3,2 go d’archive, tar met un temps fous à archiver chaque titre (plusieurs minutes, contre 1 à 2 secondes avant cette taille fatidique :slightly_smiling: ).

Top m’indique à peine 10% de travail processeur pour tar.

Donc est-ce que il y a quelque chose à faire pour remédier à ce problème :question:

Merci d’avance :smiley:

Salut,

Combien as-tu de mémoire vive, je parierais que c’est autour de 4 Go :slightly_smiling:

Tu paries très bien :smiley:

C’est un bug avec les 4 go :question:

Re,

Non c’est tout simplement qu’il garde en mémoire tout le fichier et que quand il n’a plus de place il swappe :smiley:

D’accord merci ! :slightly_smiling:

Ton ralentissement ne serait-il pas dû à la nature du “append” du “tar r” ?
Pourquoi tu ne crées pas ton archive en une fois avec un bon vieux “tar c” ?

Bonjour,

Oui c’était ma première option, mais ça ne marche pas, chaque titre écrase l’archive si je puis dire, en gros à la fin j’ai une archive avec un seul titre :slightly_smiling:

Nan je veux dire tu crées l’archive en une fois,
tu lui donnes tous les titres en argument d’un seul coup

Par exemple :

#!/bin/sh PLAYLIST_DIR="$HOME"/.mpd/playlists ARCH_FILE="$HOME"/test/fichier.tar find "$PLAYLIST_DIR" -name '*.m3u' | xargs tar cvf "$ARCH_FILE"

note: le '.m3u’ à la place de ".m3u" est important

Salut,

Quelle que soit la méthode de création de l’archive, quand elle va atteindre les 4 Go cela swapperas à mort.

Je ne vois qu’une solution c’est de faire des archives successives de moins de 4 Go :slightly_smiling:

Je vais tester ta méthode BBT1, mais oui sinon, je ferais des archives par playlists. :slightly_smiling:

Merci à vous deux.

Bon j’ai écrit des conneries, je viens de réaliser que ce n’est pas les playlists mais le contenu des playlists que tu archives.

#!/bin/sh PLAYLIST_DIR="$HOME"/.mpd/playlists ARCH_FILE="$HOME"/test/fichier.tar find "$PLAYLIST_DIR" -name '*.m3u' | xargs cat | xargs tar cvf "$ARCH_FILE"

Je n’ai pas testé le code, mais l’idée est là.

[quote=“ggoodluck47”]Salut,

Quelle que soit la méthode de création de l’archive, quand elle va atteindre les 4 Go cela swapperas à mort.

Je ne vois qu’une solution c’est de faire des archives successives de moins de 4 Go :slightly_smiling:[/quote]

tar est bien écrit et conserve une taille constante en mémoire. Le swap ne sera pas utilisé, par contre le cache sera totalement inefficace puisque :
1- typiquement sur une sauvegarde, on n’accède aux fichiers qu’une seule fois -> pas de réutilisation des lectures disque.
2- le cache est écrasé quand on a des taille de donnée plus grosse que la quantité de mémoire libre, du coup plusieurs essais consécutifs sur un même jeu de données seront beaucoup plus lent à partir de cette taille limite.