Объединение архивов TAR.GZ в C#
Если вы хотите объединить произвольное количество архивов Tar.gz в один архив, прочтите эту статью.
Описание
API Aspose.ZIP предоставляет класс TarArchive для извлечения и составления архивов Tar со сжатием или без него. Мы можем извлечь архив в память, не сохраняя его в промежуточном хранилище, и сразу передать его записи в объединенный архив Tar.
Убедитесь, что у вас достаточно виртуальной памяти для хранения содержимого всех записей.
Перенос записи
В следующем примере кода показано, как извлечь записи из нескольких архивов Tar.gz и сразу же поместить их в архив tar. Мы сжимаем его в памяти до gz, используя метод 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 }
Аналогичный подход для других архивов
Вы можете использовать тот же подход для объединения tar.lz, tar.xz, tar.z.