J'ai 5 millions de fichiers qui occupent environ 1 To d'espace de stockage. Je dois transférer ces fichiers à un tiers.
Quelle est la meilleure façon de procéder? J'ai essayé de réduire la taille en utilisant .tar.gz, mais même si mon ordinateur dispose de 8 Go de RAM, j'obtiens une erreur de "mémoire système insuffisante".
La meilleure solution pour envoyer les fichiers par courrier électronique est-elle terminée?
memory
tar
compression
out-of-memory
oshirowanen
la source
la source
.tar.gz
ou pour COPIER le fichier compressé résultant? Quoi qu'il en soit, quelque chose est bizarre, car aucune des opérations ne devrait consommer plus de mémoire simplement parce que les fichiers sont volumineux. Autrement dit, les deux opérations doivent être en streaming. Veuillez inclure plus d'informations sur les commandes qui échouent exactement.tar
devrais simplement archiver les fichiers de manière incrémentale au fur et à mesure qu'ils les répertorient, sans jamais construire de liste en mémoire. Mais encore une fois, veuillez montrer la commande exacte que vous utilisez. De plus, tous les fichiers sont-ils dans le même répertoire ou la structure du répertoire est-elle très profonde?Réponses:
Des informations supplémentaires fournies dans les commentaires révèlent que l'OP utilise une méthode GUI pour créer le
.tar.gz
fichier.Le logiciel GUI inclut souvent beaucoup plus de ballonnement que le logiciel équivalent en ligne de commande équivalent, ou effectue des tâches supplémentaires inutiles pour le plaisir de certaines fonctionnalités "supplémentaires" telles qu'une barre de progression. Cela ne me surprendrait pas si le logiciel GUI essayait de collecter une liste de tous les noms de fichiers en mémoire. Il n'est pas nécessaire de le faire pour créer une archive. Les outils dédiés
tar
etgzip
sont defintely conçus pour fonctionner avec entrée et sortie en continu ce qui signifie qu'ils peuvent faire face à l' entrée et la sortie beaucoup plus grand que la mémoire.Si vous évitez le programme GUI, vous pouvez très probablement générer cette archive en utilisant une
tar
invocation quotidienne complètement normale comme celle-ci:où
foo
est le répertoire qui contient tous vos 5 millions de fichiers.Les autres réponses à cette question vous donnent quelques
tar
commandes alternatives supplémentaires à essayer au cas où vous voudriez diviser le résultat en plusieurs morceaux, etc ...la source
"cinq millions" de fichiers et 1 To au total? Vos fichiers doivent donc être très petits. J'essaierais simplement
rsync
:Si vous n'en avez pas - ou que votre cas d'utilisation ne permet pas de l'utiliser
rsync
, je vérifierais au moins si cela7z
fonctionne avec vos données. Ce n'est peut-être pas le cas, mais je pense que cela vaut la peine d'essayer:Ou si vous ne vous sentez pas à l'aise avec
7z
au moins essayez de faire une.tar.xz
archive:(il convient de noter que les anciennes versions de
tar
ne créent pas d'.tar.xz
archives, mais les.tar.lzma
archives, lors de l'utilisation duJ
commutateur. Même les versions plus anciennes detar
, ne prennent pasJ
complètement en charge l' indicateur.)Puisque vous utilisez un programme GUI pour créer ces fichiers, je suppose que vous vous sentez un peu mal à l'aise en utilisant une interface de ligne de commande.
Pour faciliter la création, la gestion et l'extraction d'archives à partir de l'interface de ligne de commande, il existe le petit utilitaire appelé
atool
. Il est disponible pour pratiquement toutes les distributions communes que j'ai vues et fonctionne à peu près toutes les archives sur lesquelles je suis tombé, à moins que celles-ci soient désespérément obscures.Vérifiez si votre distribution a
atool
dans ses référentiels ou demandez à votre administrateur de l'installer lorsqu'elle se trouve dans un environnement de travail.atool
installe un tas de liens symboliques sur lui-même, donc l'emballage et le déballage deviennent un jeu d'enfant:Crée une archive.
Développe l'archive.
Répertorie le contenu du fichier.
Quel type d'archive est créé, le
atool
discerne par l'extension de nom de fichier de votre archive dans la ligne de commande.la source
rsync
est que si (quand) la connexion est interrompue, ellersync
peut reprendre là où elle s'était interrompue.À moins que vous ne puissiez faire mieux que la compression 25: 1, il est peu probable que vous gagniez quoi que ce soit à compresser cela avant l'envoi postal, à moins que vous n'ayez un format de bande matériel que vous pouvez échanger avec le tiers.
Le plus grand stockage commun est le rayon bleu et cela vous donnera environ 40 Go. Vous auriez besoin d'une compression de 25 à 1 sur vos données pour les adapter à cela. Si votre tierce partie ne possède que des DVD, vous avez besoin de 125: 1 (environ).
Si vous ne pouvez pas faire correspondre ces numéros de compression, utilisez simplement un disque normal, copiez-le et envoyez-le à un tiers. Dans ce cas, expédier quelque chose de plus petit qu'un lecteur de 1 To nécessitant une compression est une folie.
Il suffit de comparer cela à l'utilisation
ssh -C
(compression standard) ou de préférencersync
à la compression pour copier les fichiers sur le réseau, pas besoin de compresser et de tarer à l'avance. 1 To n'est pas impossible de se déplacer sur le net, mais cela va prendre un certain temps.la source
Avez-vous pensé à torrent? Peer-to-Peer pourrait être votre meilleure option pour un transfert sur Internet:
Vous n'avez pas dit quel système d'exploitation vous utilisiez, mais en parlant de compression tar.gz, je suppose que vous utilisez un système d'exploitation semblable à GNU / Linux. Pour cela, je suggère la transmission . Il s'agit d'un logiciel torrent open source qui s'exécute sur Mac et Linux. Je l'aime parce que les développeurs ont fait un effort pour le rendre natif pour tous les clients GUI qu'ils prennent en charge: pas de langage multiplateforme.
Vous pouvez combiner cette méthode avec la compression, mais vous perdrez la possibilité de hiérarchiser les parties du transfert.
la source
7z serait mon choix. Il permet le fractionnement automatique des archives et prend en charge la compression multi-thread. Non,
xz
non, malgré ce que dit le message d'aide. Essayez avec:La sortie est divisée en blocs de 100 Mo (changez-la avec le
-v
commutateur).Le seul véritable inconvénient est que 7z ne conserve pas les métadonnées Unix (par exemple les autorisations et le propriétaire). Si vous en avez besoin, canalisez la
tar
sortie dans7za
(voirman 7za
quelques exemples).la source
The only real downside
mais quel inconvénient!split
sur un fichier .tar.gz, et arriver à conserver les métadonnées.tar
approche.Ouais, bonne chance pour que ça soit emballé. Et l'outil GUI essaiera de le faire sur le même volume, ce qui signifie a) vous avez besoin d'un autre 1 To d'espace libre et b) le battement de tête de lire un fichier et de l'ajouter à l'archive ne sera pas trop sain pour le lecteur.
Je vois deux possibilités:
1) rsync de votre ordinateur au tiers. L'un ou l'autre aura besoin d'une adresse IP globale qui ne change pas souvent. L' énorme avantage de rsync est que si vous êtes interrompu pour une raison quelconque, il peut reprendre là où il s'était arrêté. La copie d'une archive tar de 1 To va réussir ou échouer
2) achetez un disque externe de 1 To, copiez-y les éléments et faites-vous livrer le disque. Latence élevée, mais très bonne bande passante à son arrivée. Divers services de sauvegarde en ligne pour cela pour la sauvegarde initiale.
la source
Je vous suggère d'utiliser quelque chose comme:
ce qui créera 10 fichiers d'une taille maximale de 100 Go. Mais cela ne répondrait pas à votre problème de "MOO" car tar est censé diffuser sa lecture / écriture, donc le goulot d'étranglement est gzip de manière évidente.
la source
Que diriez-vous de cela:
find
recherches répertorie l'arborescence des répertoirestar -T -
lit la liste depuis stdin-czf -
crée une archive et écrit sur stdout,z
compresse le fluxssh remotehost
connectez-vous à remotehost en utilisantssh
cd /target/dir/
passer au répertoire cibletar xzf -
extraire le flux entrant de stdinla source
Avec fexsend, vous pouvez envoyer des fichiers de n'importe quel nombre et taille à n'importe quel destinataire à la volée, voir:
http://fex.rus.uni-stuttgart.de:8080/usecases/downunder.html
Bien sûr, vous avez besoin d'un serveur F * EX, mais il est gratuit:
http://fex.rus.uni-stuttgart.de:8080/
la source