web-dev-qa-db-fra.com

Archivage de nombreux fichiers / un gros fichier

Je veux compresser environ 100'000 fichiers (c'est ce que find . -type f | wc -l dit) avec une utilisation totale du disque de 100 Go. La plupart des fichiers sont petits mais une poignée d'entre eux représente environ 70 Go sur les 100 Go.

Je ne veux pas utiliser tar ou tar.gz pour cela car si je veux accéder à l'archive, File Roller doit d'abord lire l'intégralité de l'archive à partir du disque dur externe avant même de voir la liste des fichiers. Même chose si j'essaie de lister les fichiers sur le terminal.

Je n'ai pas besoin de la gestion des droits de tar car je me souviens des quelques fichiers qui ont besoin d'autres droits que les autres. Quel algorithme de compression dois-je utiliser?

Et pendant que j'y suis: je fais des sauvegardes de disque complètes avec cette commande:

dd if=/dev/sda bs=32M | gzip -9 > /location/dateAndMachineName.gz

Il fait une assez bonne compression. Mais connaissez-vous un meilleur algorithme de compression?

2
UTF-8

La seule solution que je connaisse est pixz (Sudo apt-get install pixz) , une variante de xz utilisant un encodeur bloqué qui permet un accès/indexation aléatoire rapide. De plus, il s'agit d'une méthode parallèle utilisant plusieurs cœurs pour la compression.

Citant les documents:

Les XZ Utils existants ( http://tukaani.org/xz/ ) offrent une excellente compression au format de fichier .xz, mais ils ont deux problèmes importants:

  • Ils sont à un seul thread, alors que la plupart des utilisateurs ont aujourd'hui des ordinateurs multicœurs.
  • Les fichiers .xz qu'ils produisent ne sont qu'un gros bloc de données compressées, plutôt qu'une collection de blocs plus petits. Cela rend impossible l'accès aléatoire aux données d'origine.

Avec pixz, ces deux problèmes sont résolus.

L'utilisation est simple:

tar -Ipixz -cf foo.tpxz foo pour compresser un dossier foo

pixz -l foo.tpxz pour y lister les fichiers (vite!)

pixz -x <file_path> < foo.tpxz | tar x pour extraire un seul fichier donné <file_path> dans l'archive

En bonus, vous obtiendrez également les droits d'accès puisque les fichiers sont goudronnés en premier!

4
Andrzej Pronobis

Je ne pense qu'à une seule solution pour vous: créer une nouvelle partition, avec un système de fichiers btrfs et activer la compression transparente. Gardez à l'esprit que certaines personnes considèrent toujours btrfs comme un système de fichiers "expérimental". Cela étant dit, mon disque dur de sauvegarde secondaire utilise btrfs (depuis un peu plus de 2 ans) et jusqu'à présent, il ne m'a donné aucun problème. Mais comme d'habitude YMMV.

This and this devrait vous aider à démarrer avec btrfs, si vous ne le connaissez pas déjà.

1
Stunts