Методы создания файла Tar Gz из каталога: примеры на Python, Bash и Java

Чтобы создать файл tar.gz из каталога, вы можете использовать различные методы в зависимости от предпочитаемого вами языка программирования. Вот несколько примеров на разных языках:

  1. Python:

    import tarfile
    def create_tar_gz(directory_path, output_file_path):
    with tarfile.open(output_file_path, "w:gz") as tar:
        tar.add(directory_path, arcname="")
    # Usage example
    create_tar_gz("/path/to/directory", "/path/to/output.tar.gz")
  2. Bash (Linux/Unix):

    tar -czvf output.tar.gz /path/to/directory
  3. Java (с использованием библиотеки Apache Commons Compress):

    import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
    import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    public class TarGzCreator {
    public static void createTarGz(String directoryPath, String outputFilePath) throws IOException {
        FileOutputStream fos = new FileOutputStream(outputFilePath);
        TarArchiveOutputStream tarOs = new TarArchiveOutputStream(new GZIPOutputStream(fos));
        File directory = new File(directoryPath);
        addFilesToTarGz(tarOs, directory, "");
        tarOs.finish();
        tarOs.close();
    }
    private static void addFilesToTarGz(TarArchiveOutputStream tarOs, File file, String parentDir) throws IOException {
        String entryName = parentDir + file.getName();
        TarArchiveEntry tarEntry = new TarArchiveEntry(file, entryName);
        tarOs.putArchiveEntry(tarEntry);
        if (file.isFile()) {
            FileInputStream fis = new FileInputStream(file);
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = fis.read(buffer)) != -1) {
                tarOs.write(buffer, 0, bytesRead);
            }
            fis.close();
            tarOs.closeArchiveEntry();
        } else if (file.isDirectory()) {
            tarOs.closeArchiveEntry();
            File[] children = file.listFiles();
            if (children != null) {
                for (File child : children) {
                    addFilesToTarGz(tarOs, child, entryName + "/");
                }
            }
        }
    }
    // Usage example
    public static void main(String[] args) throws IOException {
        createTarGz("/path/to/directory", "/path/to/output.tar.gz");
    }
    }

Это всего лишь несколько примеров того, как можно создать файл tar.gz из каталога, используя разные языки программирования. Выберите тот, который соответствует вашим требованиям и среде программирования.