Comment utiliser la commande tar pour regrouper des fichiers sans compression?

60

J'ai un très grand dossier de 120 000 + fichiers. et je dois les déplacer vers un autre emplacement sur la même machine (même partition).

J'aimerais utiliser la tarcommande pour les regrouper en une seule unité, puis les mvramener à l'emplacement final.

De quelle commande ai-je besoin pour les exécuter tartous ensemble et ne rien compresser (le résultat le plus rapide est nécessaire).

Sergserg
la source
1
Pourquoi utiliser tar et pas seulement mv (1) les fichiers? Ou utilisez cp (1) si vous ne voulez pas perdre les originaux?
vonbrand
@vonbrand on peut vouloir rsync sur le réseau un seul fichier continu. beaucoup plus rapide que rsynchroniser 120k fichiers plus petits. c'est la différence entre une vitesse constante et maximale, des hauts et des bas
mwm

Réponses:

85

tar ne compresse pas par défaut, mais n’ajoutez pas d’option de compression:

tar cvf myfolder.tar myfolder

Je suis notamment de Hennes commentaire dans ma réponse car il ajoute des informations utiles:

TAR (tape archive) est à l'origine un programme Unix utilisé pour créer des archives sur bande. Étant donné que tous les périphériques sont traités comme des fichiers sous Unix, il est facile de ne pas écrire sur une bande mais dans un fichier. Cela se fait généralement avec le drapeau -f. Le goudron de commande CVF moyens myfolder.tar de MyFolder goudron, c réer, v erbose f ile filename_to_create what_to_tar. Il n'y a pas de compression là-dedans. Les archives Tar (sous forme de fichiers) sont souvent compressées à l’aide du programme de compression et ont obtenu l’extension .Z (par exemple, fichier.tar.Z). Plus tard, cela a été inclus dans gtar avec le drapeau z

terdon
la source
Est-ce que cela va ajouter de manière récursive tous les sous-dossiers et fichiers dans le fichier tar?
Sergserg
2
@Serg oui, ça va.
Terdon
1
Merci. J'essaie habituellement de répondre à la fois en forme courte et en forme longue. Comme dans "oui / non, cela ne fonctionnera pas" pour le court-métrage, et une explication de la raison pour laquelle la réponse est plus longue. Avoir le contexte pour pourquoi aide souvent à l'avenir.
Hennes
@Serg, car il n'est pas toujours vrai qu'un manuel ou des instructions soient si bons qu'ils clarifient tout de suite les choses, tout en les lisant, parfois le meilleur moyen est d'essayer la commande de toute façon, puis vous verrez ce qu'elle fait. et une fois que vous savez ce que cela fait ou avez une bonne idée, le manuel peut le confirmer pour vous! Il est facile de tester tar avec un petit ensemble de fichiers. Par exemple, avec des exemples d'utilisation, sans avoir à écrire le manuel.
barlop
Notez que si les résultats les plus rapides sont souhaités, vous devez omettre l’indicateur "v" pour désactiver la sortie. Dans mon cas, le temps de commande a été réduit de 16 secondes à 6 secondes lors de son exécution sur une instance AWS t2.medium.
David Backeus
6

La réponse de @terdon est juste.

Mais j'ai fait une petite erreur en faisant tar cvf myfolder.tar.gz myfolder. Je voulais les mêmes noms de fin pour les fichiers dans le même chemin, tar.gzmême lorsque ce n'est pas compressé.

Donc, si vous mettez quelque chose comme .gz, .zà la fin du nom de fichier que vous essayez de tar, l'appli tar comprendra que vous voulez utiliser une compression, et elle s'appliquera en conséquence à ce que vous mettez (gz = gzip).

Donc, si vous voulez utiliser une extension comme ça tar.gz, assurez-vous d’utiliser le drapeau--no-auto-compress

--no-auto-compress    do not use archive suffix to determine the compression 
program
Ratata Tata
la source