Методы исключения каталога при архивировании файлов: примеры кода на Python, Bash и PowerShell

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

  1. Python:

    import zipfile
    import os
    def zip_directory(directory_path, zip_path, exclude_directory):
       with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zip_file:
           for root, _, files in os.walk(directory_path):
               if exclude_directory in root:
                   continue
               for file in files:
                   file_path = os.path.join(root, file)
                   zip_file.write(file_path, os.path.relpath(file_path, directory_path))
    directory_path = '/path/to/source/directory'
    zip_path = 'output.zip'
    exclude_directory = '/path/to/exclude/directory'
    zip_directory(directory_path, zip_path, exclude_directory)
  2. Bash (с помощью команды zip):

    #!/bin/bash
    source_dir="/path/to/source/directory"
    exclude_dir="/path/to/exclude/directory"
    output_zip="output.zip"
    cd "$source_dir"
    zip -r "$output_zip" . -x "$exclude_dir/*"
  3. PowerShell:

    $sourceDir = 'C:\path\to\source\directory'
    $excludeDir = 'C:\path\to\exclude\directory'
    $outputZip = 'output.zip'
    Add-Type -A 'System.IO.Compression.FileSystem'
    [System.IO.Compression.ZipFile]::CreateFromDirectory($sourceDir, $outputZip, 'Optimal', $true)
    $zipArchive = [System.IO.Compression.ZipFile]::Open($outputZip, 'Update')
    $files = Get-ChildItem $zipArchive | Where-Object { $_.FullName -notlike "$excludeDir/*" }
    foreach ($file in $files) {
       $zipArchive.ExtractToFile($file.FullName, "$sourceDir\$($file.Name)", $true)
    }
    $zipArchive.Dispose()

Это всего лишь несколько примеров на популярных языках. Конкретный метод, который вы выберете, будет зависеть от вашей среды программирования и требований.