コード例 #1
0
        public static void ExtractTGZ(String gzArchiveName, String destFolder)
        {
            var flag = gzArchiveName.Split(Path.DirectorySeparatorChar).Last().Split('.').First() + ".bin";

            if (File.Exists(Path.Combine(destFolder, flag)))
            {
                return;
            }

            Console.WriteLine($"Extracting.");
            var task = Task.Run(() =>
            {
                using (var inStream = File.OpenRead(gzArchiveName))
                {
                    using (var gzipStream = new GZipInputStream(inStream))
                    {
                        using (TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream))
                            tarArchive.ExtractContents(destFolder);
                    }
                }
            });

            while (!task.IsCompleted)
            {
                Thread.Sleep(200);
                Console.Write(".");
            }

            File.Create(Path.Combine(destFolder, flag));
            Console.WriteLine("");
            Console.WriteLine("Extracting is completed.");
        }
コード例 #2
0
        /// <summary>Downloads the and extract.</summary>
        /// <param name="uri">          URI of the resource.</param>
        /// <param name="packageName">  Name of the package.</param>
        /// <param name="version">      The version.</param>
        /// <param name="specDirectory">Pathname of the specifier directory.</param>
        /// <returns>True if it succeeds, false if it fails.</returns>
        private static bool DownloadAndExtract(
            Uri uri,
            string packageName,
            string version,
            string specDirectory)
        {
            try
            {
                // build our extraction directory name
                string directory = Path.Combine(specDirectory, $"{packageName}-{version}");

                // make sure our destination directory exists
                if (!Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                }

                using (Stream fileStream = _httpClient.GetStreamAsync(uri).Result)
                    using (Stream gzipStream = new GZipInputStream(fileStream))
                        using (TarArchive tar = TarArchive.CreateInputTarArchive(gzipStream))
                        {
                            // extract
                            tar.ExtractContents(directory);
                        }

                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"DownloadPublishedPackage <<< failed to download package: {packageName}-{version}: {ex.Message}");
                throw;
            }
        }
コード例 #3
0
ファイル: Utility.cs プロジェクト: orf53975/HomeGenie
        internal static List <string> UncompressTgz(string archiveName, string destinationFolder)
        {
            List <string> extractedFiles = new List <string>();

            try
            {
                Stream inStream   = File.OpenRead(archiveName);
                Stream gzipStream = new GZipInputStream(inStream);

                TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream);
                tarArchive.ProgressMessageEvent += (archive, entry, message) => {
                    extractedFiles.Add(entry.Name);
                };

                tarArchive.ExtractContents(destinationFolder);
                tarArchive.ListContents();
                tarArchive.Close();

                gzipStream.Close();
                inStream.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine("UnTar error: " + e.Message);
            }

            return(extractedFiles);
        }
コード例 #4
0
        public void TestMigration()
        {
            string dir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            Directory.CreateDirectory(dir);

            var assembly = Assembly.GetExecutingAssembly();

            using (Stream fs = assembly.GetManifestResourceStream("longomatch.tar.gz")) {
                using (Stream gzipStream = new GZipInputStream(fs)) {
                    using (TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream)) {
                        tarArchive.ExtractContents(dir);
                    }
                }
            }

            CouchbaseStorageLongoMatch storage = new CouchbaseStorageLongoMatch(dir, "longomatch");

            Assert.AreEqual(2, storage.RetrieveAll <Team> ().Count());
            Assert.AreEqual(1, storage.RetrieveAll <Dashboard> ().Count());
            Assert.AreEqual(1, storage.RetrieveAll <LMProject> ().Count());

            Team team = storage.RetrieveAll <Team> ().First();

            Assert.DoesNotThrow(team.Load);

            Dashboard dashboard = storage.RetrieveAll <Dashboard> ().First();

            Assert.DoesNotThrow(dashboard.Load);

            LMProject project = storage.RetrieveAll <LMProject> ().First();

            Assert.DoesNotThrow(project.Load);
        }
コード例 #5
0
ファイル: ContainerLauncher.cs プロジェクト: Ryu609/Warewolf
 void ExtractTar(Stream tarSteam)
 {
     using (TarArchive tarArchive = TarArchive.CreateInputTarArchive(tarSteam, TarBuffer.DefaultBlockFactor))
     {
         tarArchive.ExtractContents(LogOutputDirectory);
     }
 }
コード例 #6
0
ファイル: ArchiveManager.cs プロジェクト: PhonkX/uLearn
 /// <summary>
 /// Extracts contents of GZipped Tar file to specified directory
 /// </summary>
 /// <param name="filename">Input .tar.gz file</param>
 /// <param name="directory">Output directory</param>
 public static void ExtractTarGz(string filename, string directory)
 {
     using (Stream inStream = File.OpenRead(filename))
         using (Stream gzipStream = new GZipInputStream(inStream))
             using (TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream))
                 tarArchive.ExtractContents(directory);
 }
コード例 #7
0
        /// <summary>
        /// Attempts to untar a tar archive and to copy its content into a folder.
        /// If it succeeds, the resulting images are added to the files to be added into the generation.
        /// </summary>
        /// <param name="path">Path of the tar archive to be checked.</param>
        private void CheckTarArchive(string path)
        {
            try
            {
                using (FileStream stream = new FileStream(path, FileMode.Open))
                {
                    using (TarArchive tarFile = TarArchive.CreateInputTarArchive(stream))
                    {
                        int    pathIndex = Data.Files.IndexOf(path);
                        string tarPath   = GenerateArchivePath(path);

                        tarFile.ExtractContents(tarPath);

                        List <string> newFiles = new List <string>();
                        ParseExtractedElements(newFiles, new DirectoryInfo(tarPath));

                        InsertArchiveFiles(pathIndex, newFiles);
                    }
                }
            }
            catch
            {
                tarErrors.Add(path);
                Data.Files.Remove(path);
            }
        }
コード例 #8
0
        private static void PreallocDBFiles(string installDir)
        {
            try
            {
                Logger.Debug("Stopping DB...");
                StopService(StationService.MONGO_SERVICE_NAME);
                Logger.Debug("DB is stopped");

                string journalDir = Path.Combine(installDir, @"MongoDB\Data\DB\journal");
                if (Directory.Exists(journalDir))
                {
                    string[] preallocFiles = Directory.GetFiles(journalDir, "prealloc.*");

                    if (preallocFiles != null && preallocFiles.Length > 0)
                    {
                        return;
                    }
                }

                Logger.Debug("Extracting prealloc DB files...");
                string          preallocZip = Path.Combine(installDir, @"MongoDB\Data\DB\mongoPrealloc.tar.gz");
                GZipInputStream gzipIn      = new GZipInputStream(File.OpenRead(preallocZip));
                using (TarArchive tar = TarArchive.CreateInputTarArchive(gzipIn))
                {
                    tar.ExtractContents(Path.Combine(installDir, @"MongoDB\Data\DB"));
                }

                Logger.Info("Extract prealloc DB files successfully");
            }
            catch (Exception e)
            {
                Logger.Warn("Error during extracting prealloc DB files", e);
            }
        }
コード例 #9
0
        /// <summary>Downloads the and extract.</summary>
        /// <param name="uri">          URI of the resource.</param>
        /// <param name="packageName">  Name of the package.</param>
        /// <param name="version">      The version.</param>
        /// <param name="specDirectory">Pathname of the specifier directory.</param>
        /// <returns>True if it succeeds, false if it fails.</returns>
        private static bool DownloadAndExtract(
            Uri uri,
            string packageName,
            string version,
            string specDirectory)
        {
            Stream     fileStream = null;
            Stream     gzipStream = null;
            TarArchive tar        = null;

            try
            {
                // build our extraction directory name
                string directory = Path.Combine(specDirectory, $"{packageName}-{version}");

                // make sure our destination directory exists
                if (!Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                }

                // start our download as a stream
                fileStream = _httpClient.GetStreamAsync(uri).Result;

                // extract to the npm directory
                gzipStream = new GZipInputStream(fileStream);

                // grab the tar archive
                tar = TarArchive.CreateInputTarArchive(gzipStream);

                // extract
                tar.ExtractContents(directory);

                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"DownloadPublishedPackage <<< failed to download package: {packageName}-{version}: {ex.Message}");
                throw;
            }
            finally
            {
                // clean up
                if (tar != null)
                {
                    tar.Close();
                }

                if (gzipStream != null)
                {
                    gzipStream.Close();
                }

                if (fileStream != null)
                {
                    fileStream.Close();
                }
            }
        }
コード例 #10
0
ファイル: UpdateService.cs プロジェクト: whtsky/Jackett
        private async Task <string> DownloadRelease(List <Asset> assets, bool isWindows, string version)
        {
            Variants variants         = new Variants();
            string   artifactFileName = variants.GetArtifactFileName(variant);
            Asset    targetAsset      = assets.Where(a => a.Browser_download_url.EndsWith(artifactFileName, StringComparison.OrdinalIgnoreCase) && artifactFileName.Length > 0).FirstOrDefault();

            if (targetAsset == null)
            {
                logger.Error("Failed to find asset to download!");
                return(null);
            }

            var url = targetAsset.Browser_download_url;

            var data = await client.GetBytes(SetDownloadHeaders(new WebRequest()
            {
                Url = url, EmulateBrowser = true, Type = RequestType.GET
            }));

            while (data.IsRedirect)
            {
                data = await client.GetBytes(new WebRequest()
                {
                    Url = data.RedirectingTo, EmulateBrowser = true, Type = RequestType.GET
                });
            }

            var tempDir = Path.Combine(Path.GetTempPath(), "JackettUpdate-" + version + "-" + DateTime.Now.Ticks);

            if (Directory.Exists(tempDir))
            {
                Directory.Delete(tempDir, true);
            }

            Directory.CreateDirectory(tempDir);

            if (isWindows)
            {
                var zipPath = Path.Combine(tempDir, "Update.zip");
                File.WriteAllBytes(zipPath, data.Content);
                var fastZip = new FastZip();
                fastZip.ExtractZip(zipPath, tempDir, null);
            }
            else
            {
                var gzPath = Path.Combine(tempDir, "Update.tar.gz");
                File.WriteAllBytes(gzPath, data.Content);
                Stream inStream   = File.OpenRead(gzPath);
                Stream gzipStream = new GZipInputStream(inStream);

                TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream);
                tarArchive.ExtractContents(tempDir);
                tarArchive.Close();
                gzipStream.Close();
                inStream.Close();
            }

            return(tempDir);
        }
コード例 #11
0
ファイル: Files.cs プロジェクト: Hansausage/dfcli
 public static void Untar(string tarball, string path)
 {
     using (FileStream inStream = File.OpenRead(tarball))
         using (TarArchive tar = TarArchive.CreateInputTarArchive(inStream))
         {
             tar.ExtractContents(path);
         }
 }
コード例 #12
0
 string ExtractTar(Stream tarSteam)
 {
     using (TarArchive tarArchive = TarArchive.CreateInputTarArchive(tarSteam, TarBuffer.DefaultBlockFactor))
     {
         tarArchive.ExtractContents(Environment.ExpandEnvironmentVariables("%TEMP%"));
     }
     return(File.ReadAllText(Path.Combine(Environment.ExpandEnvironmentVariables("%TEMP%"), "warewolf-server.log")));
 }
コード例 #13
0
 private static void ExtractToDirectory(string file, string targetDir)
 {
     using (Stream inStream = File.OpenRead(file))
         using (Stream gzipStream = new GZipInputStream(inStream)) {
             TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream);
             tarArchive.ExtractContents(targetDir);
         }
 }
コード例 #14
0
        /// <summary>
        /// tar文件解压
        /// </summary>
        /// <param name="zipPath">压缩文件路径***.tar</param>
        /// <param name="goalDir">解压到的目录</param>
        /// <param name="encoding">编码</param>
        /// <returns></returns>
        public bool UnzipTar(string zipPath, string goalDir, string encoding = "utf-8")
        {
            using Stream inStream       = File.OpenRead(zipPath);
            using TarArchive tarArchive = TarArchive.CreateInputTarArchive(inStream, Encoding.GetEncoding(encoding));
            tarArchive.ExtractContents(goalDir);

            return(true);
        }
コード例 #15
0
 public void InitNewModel(Engine engine)
 {
     using (Stream fileStream = File.OpenRead(_options.NewModelFile))
         using (Stream gzipStream = new GZipInputStream(fileStream))
             using (TarArchive archive = TarArchive.CreateInputTarArchive(gzipStream))
             {
                 archive.ExtractContents(engine.ConfigDirectory);
             }
 }
コード例 #16
0
ファイル: Program.cs プロジェクト: yushulx/dotnet-tar-gzip
        public void ExtractTar(String tarFileName, String destFolder)
        {
            Stream     inStream   = File.OpenRead(tarFileName);
            TarArchive tarArchive = TarArchive.CreateInputTarArchive(inStream);

            tarArchive.ExtractContents(destFolder);
            tarArchive.Close();
            inStream.Close();
        }
コード例 #17
0
 public static void UnTarGZ(FileInfo file)
 {
     using (Stream stream = File.OpenRead(file.FullName))
         using (GZipInputStream gzipStream = new GZipInputStream(stream))
             using (TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream))
             {
                 tarArchive.ExtractContents("/tmp/targztest");
             }
 }
コード例 #18
0
 public static void UnTarGZ(MemoryStream stream)
 {
     using (GZipInputStream gzipStream = new GZipInputStream(stream))
         using (TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream))
         {
             gzipStream.IsStreamOwner = false;
             tarArchive.ExtractContents("/tmp/targztest");
         }
 }
コード例 #19
0
        public static void Extract(String name)
        {
            TarArchive ta = TarArchive.CreateInputTarArchive(new
                                                             FileStream(@name, FileMode.Open, FileAccess.Read));

            ta.ProgressMessageEvent += MyNotifier;
            ta.ExtractContents(@".");
            ta.Close();
        }
コード例 #20
0
 private static void ExtractTGZ(string gzArchiveName, string destFolder)
 {
     using (Stream inStream = File.OpenRead(gzArchiveName))
         using (Stream bzip2Stream = new BZip2InputStream(inStream))
             using (TarArchive tarArchive = TarArchive.CreateInputTarArchive(bzip2Stream))
             {
                 tarArchive.ExtractContents(destFolder);
             }
 }
コード例 #21
0
 public static void DecompressZip(FileInfo fileToDecompress)
 {
     using (Stream targetStream = new GZipInputStream(File.OpenRead(fileToDecompress.FullName)))
     {
         using (TarArchive tarArchive = TarArchive.CreateInputTarArchive(targetStream, TarBuffer.DefaultBlockFactor))
         {
             tarArchive.ExtractContents(@"C:\");
         }
     }
 }
コード例 #22
0
        /// <summary>
        /// Unpack the archive
        /// </summary>
        public static Task ExtractAsync(Stream source, string targetDirectory)
        {
            using (var gzipStream = new GZipStream(source, CompressionMode.Decompress))
                using (TarArchive archive = TarArchive.CreateInputTarArchive(gzipStream))
                {
                    archive.ExtractContents(targetDirectory);
                }

            return(Task.CompletedTask);
        }
コード例 #23
0
ファイル: UpgradeManager.cs プロジェクト: soundanny23/stoffi
        /// <summary>
        /// Unpacks the different upgrade packages contained inside the downloaded file.
        ///
        /// Each upgrade of Stoffi is to be packaged inside a file called N.tar.bz2 (where N
        /// is the version number) file containing the following:
        /// 1) All files that should be copied to the program folder
        /// 2) Optional: "Settings Migrator.dll", this will be used later to migrate the settings in SettingsManager
        ///
        /// The method will call Propare() on each version as they are decompressed and unpacked, this will copy the files to a
        /// folder called "Queue". From here the content will be copied to the program folder at Finish().
        /// </summary>
        public static void Unpack()
        {
            string folder = downloadFilename + "_tmp/packages/";

            U.L(LogLevel.Debug, "UPGRADE", "Unpack versions");
            DirectoryInfo folderInfo = new DirectoryInfo(baseFolder + "/" + upgradeFolder + folder);

            FileInfo[] files    = folderInfo.GetFiles("*.tar.bz2", SearchOption.AllDirectories);
            List <int> versions = new List <int>();

            if (!Directory.Exists(baseFolder + "/" + upgradeFolder + "Queue"))
            {
                Directory.CreateDirectory(baseFolder + "/" + upgradeFolder + "Queue");
            }

            // check each file inside the folder and add the version number to our list
            foreach (FileInfo file in files)
            {
                U.L(LogLevel.Debug, "UPGRADE", "Version file @ " + file.FullName);
                versions.Add(Convert.ToInt32(file.Name.Substring(0, file.Name.Length - 8)));
            }

            versions.Sort();
            foreach (int version in versions)
            {
                DispatchProgressChanged(0, new ProgressState(U.T("UpgradeProcessing"), true));
                U.L(LogLevel.Debug, "UPGRADE", "Processing version " + version.ToString());

                String bz2File = baseFolder + "/" + upgradeFolder + folder + SettingsManager.Channel + "/" + SettingsManager.Architecture + "/" + version.ToString() + ".tar.bz2";
                String tarFile = baseFolder + "/" + upgradeFolder + folder + SettingsManager.Channel + "/" + SettingsManager.Architecture + "/" + version.ToString() + ".tar";
                String tmpFold = baseFolder + "/" + upgradeFolder + folder + SettingsManager.Channel + "/" + SettingsManager.Architecture + "/" + version.ToString() + "_tmp/";

                U.L(LogLevel.Debug, "UPGRADE", "Decompressing");
                BZip2.Decompress(File.OpenRead(bz2File), File.Create(tarFile), true);

                Stream     inStream = File.OpenRead(tarFile);
                TarArchive archive  = TarArchive.CreateInputTarArchive(inStream, TarBuffer.DefaultBlockFactor);
                Directory.CreateDirectory(tmpFold);
                archive.ExtractContents(tmpFold);
                archive.Close();
                inStream.Close();

                if (File.Exists(Path.Combine(tmpFold, "Settings Migrator.dll")))
                {
                    File.Move(Path.Combine(tmpFold, "Settings Migrator.dll"), Path.Combine(tmpFold, String.Format("Migrator.{0}.dll", version.ToString())));
                }

                U.L(LogLevel.Debug, "UPGRADE", "Prepare version " + version.ToString());
                Prepare(tmpFold, baseFolder + "/" + upgradeFolder + "Queue/");
                pendingUpgradeVersion = version;
            }

            DispatchUpgraded();
            U.L(LogLevel.Debug, "UPGRADE", "Upgrade completed");
        }
コード例 #24
0
 /// <summary>
 /// https://github.com/icsharpcode/SharpZipLib
 /// </summary>
 /// <param name="tarFile"></param>
 /// <param name="outDir"></param>
 /// <returns></returns>
 static void Extract(string tarFile, string outDir)
 {
     using (Stream inStream = File.OpenRead(tarFile))
     {
         using (TarArchive tarArchive = TarArchive.CreateInputTarArchive(inStream))
         {
             tarArchive.ExtractContents(outDir);
             tarArchive.Close();
         }
         inStream.Close();
     }
 }
コード例 #25
0
 public static void Restore(string archive, string password, string directory, string pattern = "*")
 {
     using (Stream stream = File.OpenRead(archive))
     {
         using (CryptoStream cryptoStream = Cipher.Decrypt(stream, password))
             using (BZip2InputStream bzip2 = new BZip2InputStream(cryptoStream))
                 using (TarArchive tar = TarArchive.CreateInputTarArchive(bzip2))
                 {
                     tar.ExtractContents(directory);
                 }
     }
 }
コード例 #26
0
        private void UnPackJRE(string name, string path)
        {
            Stream inStream   = File.OpenRead(Path.GetTempPath() + name);
            Stream gzipStream = new GZipInputStream(inStream);

            TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream);

            tarArchive.ExtractContents(path);
            tarArchive.Close();
            gzipStream.Close();
            inStream.Close();
        }
コード例 #27
0
ファイル: Program.cs プロジェクト: gurko32/Installer
        protected void Deneme(object o, EventArgs args)
        {
            string zipPath = ((FileChooserButton)o).Filename;

            extractPath = ((FileChooserButton)o).Filename;
            //((FileChooserButton)o).CurrentFolderUri.Substring(7);

            try
            {
                if (zipPath.EndsWith(".zip"))
                {
                    //Stream inStream = File.OpenRead(zipPath);
                    //Stream zipStream = new ZipInputStream(inStream);
                    //extractPath = extractPath.Replace(".zip", "");



                    FastZip fastZip = new FastZip();
                    extractPath = extractPath.Replace(".zip", "");



                    fastZip.ExtractZip(zipPath, "/home/gurko32/ZipDenemeleri/WTF", null);

                    SetPageComplete(GetNthPage(CurrentPage), true);
                }
                else if (zipPath.EndsWith(".tar.gz"))
                {
                    Stream inStream   = File.OpenRead(zipPath);
                    Stream gzipStream = new GZipInputStream(inStream);
                    extractPath = extractPath.Replace(".tar.gz", "");


                    TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream);
                    tarArchive.ExtractContents(extractPath);
                    tarArchive.Close();

                    inStream.Close();

                    SetPageComplete(GetNthPage(CurrentPage), true);
                }
                else
                {
                    Console.WriteLine("Unsupported File Type");
                    SetPageComplete(GetNthPage(CurrentPage), false);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("HATA VAR " + ex);
            }
        }
コード例 #28
0
ファイル: ExtractService.cs プロジェクト: famoser/archive
 private void ExtractGZipSample(string gzipFileName, string targetDir)
 {
     using (Stream inStream = File.OpenRead(gzipFileName))
     {
         using (var gzipStream = new GZipInputStream(inStream))
         {
             using (TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream))
             {
                 tarArchive.ExtractContents(targetDir);
             }
         }
     }
 }
コード例 #29
0
        private void ExtractTGZ(String gzArchiveName, String destFolder)
        {
            Stream inStream   = File.OpenRead(gzArchiveName);
            Stream gzipStream = new GZipInputStream(inStream);

            TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream);

            tarArchive.ExtractContents(destFolder);
            tarArchive.Close();

            gzipStream.Close();
            inStream.Close();
        }
コード例 #30
0
        public static void Unpack(string gzArchiveName, string destFolder)
        {
            Stream inStream   = File.OpenRead(gzArchiveName);
            Stream gzipStream = new GZipInputStream(inStream);

            TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream);

            tarArchive.ExtractContents(destFolder);
            tarArchive.Close();

            gzipStream.Close();
            inStream.Close();
        }