Archivos TAR.GZ fusionándose en C#
Si desea combinar números arbitrarios de archivos Tar.gz en un solo archivo, lea este artículo.
Descripción
La API Aspose.ZIP proporciona la clase TarArchive para extraer y componer archivos Tar, con o sin compresión. Podemos extraer un archivo a la memoria sin guardarlo en un almacenamiento intermedio y pasar sus entradas al archivo Tar combinado de inmediato.
Asegúrese de tener suficiente memoria virtual para guardar el contenido de todas las entradas.
Transferir una entrada
El siguiente ejemplo de código demuestra cómo extraer entradas de varios archivos Tar.gz e inmediatamente colocarlas en un archivo tar. Lo comprimimos a gz en la memoria usando el método SaveGzipped.
1 string[] archivesPaths = new string[] { "data/first.tar.gz",
2 "data/second.tar.gz", "data/third.tar.gz" };
3 TarArchive[] archives = new TarArchive[archivesPaths.Length];
4
5 using (TarArchive mergred = new TarArchive())
6 {
7 for (int i = 0; i < archivesPaths.Length; i++)
8 {
9 TarArchive a = TarArchive.FromGZip(archivesPaths[i]);
10 archives[i] = a;
11 foreach (TarEntry entry in a.Entries)
12 mergred.CreateEntry(entry.Name, entry.Open());
13 }
14
15 mergred.SaveGzipped("merged.tar.gz");
16
17 for (int i = 0; i < archivesPaths.Length; i++)
18 {
19 archives[i].Dispose();
20 }
21 }
Enfoque similar para otros archivos
Puede utilizar el mismo enfoque para combinar tar.lz, tar.xz, tar.z.