Le programme tar (de l'anglais tape archiver, littéralement « archiveur pour bande ») est un logiciel d'archivage de fichiers standard des systèmes de type UNIX. Il a été créé dans les premières versions d'UNIX et standardisé par les normes POSIX.1-1988 puis POSIX.1-2001. Il existe plusieurs implémentations tar, la plus couramment utilisée étant GNU tar.
Limitations de tar
Tar est un format conçu pour le stockage incrémental de données sur des bandes magnétiques. Il est devenu populaire auprès des développeurs des système de type Unix, car il est le seul standard à prendre en compte les méta-données des systèmes de fichiers.
Les noms de fichiers et les fichiers pointés par les liens symboliques sont limités à 100 caractères (nom complet dans l'archive, y compris le séparateur de nom de répertoire). Le système de fichiers ext2 accepte des noms de fichiers de 255 octets. Un système Linux accepte des noms absolus de 4096 octets.
La taille de chaque fichier est limitée à 812-1, soit environ 68 Gio. Un fichier tar n'a pas de limite de taille.
Tar ne dispose pas d'un index centralisé. Pour extraire un seul fichier de l'archive, il faut donc commencer par le premier en-tête et lire les en-têtes les uns après les autres, dans l'ordre du fichier tar. Sur des médias physiquement lents (CD-ROM, DVD, voire disque dur et même les cassettes), le fait de lire des blocs non contigus pour n'en utiliser que très peu peut rendre extrêmement lente l'extraction d'un ou plusieurs fichiers ciblés ou l'affichage de la liste complète des fichiers.
Le stockage des xattrs ou des ACL nécessitent des extensions non standards.
Le format tar est souvent utilisé conjointement avec des utilitaires de compression. Or le format tar a le désavantage d'avoir beaucoup d'octets inutilisés dans ses en-têtes et d'utiliser des nombres sous forme ASCII en système octal. Les utilitaires doivent donc compresser des données qui sont en fait sans utilité et des nombres stockés de manière très éclatée. En théorie de la compression de données, une démonstration prouve qu'ajouter volontairement des données même dans le but de rendre plus compressible n'est pas une bonne stratégie dans le cas général. Cela ajoute de l'entropie à l'information. Il en résulte que les données compressés prendront plus de place dans le cas général.
Le checksum ne porte que sur l'en-tête. De plus l'algorithme a une faible résistance aux erreurs. Il suffit que deux bits bien placés soient modifiés pour que cette erreur ne soit pas détectée. Pour le stockage et le transfert par réseau, il est donc recommandé que le programme de compression utilisé conjointement avec tar, utilise un algorithme de vérification d'intégrité (par exemple CRC32B, MD5, SHA1, etc).
Les formats vieux gnu et POSIX peuvent théoriquement entrer en conflit et tromper certains programmes.
Précaution d'emploi
Un tarbomb est un fichier tar contenant une grande quantité de fichiers à la racine de l'archive. Lorsqu'elle est désarchivée, les fichiers d'un tarbomb noient le contenu du répertoire de travail, voire écrasent les fichiers de l'utilisateur qui portent le même nom que ceux de l'archive. Dans le meilleur des cas, l'utilisateur doit ensuite sélectionner un par un les fichiers apparus pour les recopier dans un nouveau répertoire, ce tri pouvant se révéler un travail fastidieux si les fichiers initiaux et les nouveaux sont très mélangés.
L'usage veut donc que les fichiers soient contenus dans un répertoire qui sera archivé, plutôt que de les archiver directement. On peut également extraire les fichiers dans un sous-répertoire dédié ou examiner au préalable le contenu de l'archive avec l'option t.
Contrairement à GNU tar, le tar original permettait de créer et d'extraire des fichiers avec un chemin absolu, ce qui peut s'avérer dangereux. Il est cependant encore possible de faire référence à des répertoires parents de façon relative (../).