Я ищу решение проблемы с созданием tar.gz-архива с помощью Powershell v4. Я не мог найти расширения/пакеты, созданные или проверенные Microsoft для обеспечения такой функциональности. Существуют ли такие решения [tar-ing и gzip-ing]?Как создать файл tar gz с помощью powershell
2
A
ответ
1
Microsoft внедрила gzipstream in System.IO.Compression в .Net 2.0 В C# есть множество примеров и многих других в powershell. Powershell Community Extensions также имеют функции Write-Zip и Write-Tar. Вот функция gzip, которую я сделал довольно давно. Он должен быть действительно обновлен для обработки нескольких входов и лучшего вывода. Он также обрабатывает только один файл за раз. Но вам нужно начать, если вы хотите увидеть, как это делается.
function New-GZipArchive
{
[CmdletBinding(SupportsShouldProcess=$true,
PositionalBinding=$true)]
[OutputType([Boolean])]
Param
(
# The input file(s)
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
Position=0)]
[ValidateNotNull()]
[ValidateNotNullOrEmpty()]
[ValidateScript({Test-Path $_})]
[String]
$fileIn,
# The path to the requested output file
[Parameter(Position=1)]
[ValidateNotNull()]
[ValidateNotNullOrEmpty()]
#validation is done in the script as the only real way to determine if it is a valid path is to try it
[String]
$fileOut,
# Param3 help description
[Switch]
$Clobber
)
Process
{
if ($pscmdlet.ShouldProcess("$fileIn", "Zip file to $fileOut"))
{
if($fileIn -eq $fileOut){
Write-Error "You can't zip a file into itself"
return
}
if(Test-Path $fileOut){
if($Clobber){
Remove-Item $fileOut -Force -Verbose
}else{
Write-Error "The output file already exists and the Clobber parameter was not specified. Please input a non-existent filename or specify the Clobber parameter"
return
}
}
try{
#create read stream
$fsIn = New-Object System.IO.FileStream($fileIn, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read, [System.IO.FileShare]::Read)
#create out stream
$fsOut = New-Object System.IO.FileStream($fileOut, [System.IO.FileMode]::CreateNew, [System.IO.FileAccess]::Write, [System.IO.FileShare]::None)
#create gzip stream using out file stream
$gzStream = New-Object System.IO.Compression.GZipStream($fsout, [System.IO.Compression.CompressionMode]::Compress)
#create a shared buffer
$buffer = New-Object byte[](262144) #256KB
do{
#read into buffer
$read = $fsIn.Read($buffer,0,262144)
#write buffer back out
$gzStream.Write($buffer,0,$read)
}
while($read -ne 0)
}
catch{
#really should add better error handling
throw
}
finally{
#cleanup
if($fsIn){
$fsIn.Close()
$fsIn.Dispose()
}
if($gzStream){
$gzStream.Close()
$gzStream.Dispose()
}
if($fsOut){
$fsOut.Close()
$fsOut.Dispose()
}
}
}
}
}
Использование:
dir *.txt | %{New-GZipArchive $_.FullName $_.FullName.Replace('.txt','.gz') -verbose -clobber}
VERBOSE: Performing operation "Zip file to C:\temp\a.gz" on Target "C:\temp\a.txt".
VERBOSE: Performing operation "Remove file" on Target "C:\temp\a.gz".
VERBOSE: Performing operation "Zip file to C:\temp\b.gz" on Target "C:\temp\b.txt".
VERBOSE: Performing operation "Remove file" on Target "C:\temp\b.gz".
VERBOSE: Performing operation "Zip file to C:\temp\c.gz" on Target "C:\temp\c.txt".
VERBOSE: Performing operation "Remove file" on Target "C:\temp\c.gz".
Смежные вопросы
- 1. Сделайте файл .tar или .gz в окне, используя perl
- 2. создать файл tar из некоторого файла .tar.gz
- 3. Как распаковать gz-файл с помощью Python
- 4. Обработка одиночного файла из поврежденного GZ (TAR)
- 5. В чем разница между tar и gZ?
- 6. Создать файл tar в OCaml
- 7. создать файл tar из stdin
- 8. Разархивировать файл .gz с помощью C#
- 9. Сплит-файлы с использованием tar, gz, zip или bzip2
- 10. Как создать файл .tar на ОС Windows?
- 11. Открыть файл gz с помощью библиотеки Minizip
- 12. Untar (.gz) файл на as400?
- 13. Создать Vagrant файл с помощью PowerShell
- 14. Перезаписанный файл с tar
- 15. Как создать файлы zip/gz/tar, если файлы старше определенных дней в UNIX или Linux
- 16. Как извлечь файл tar внутри файла tar
- 17. Как я могу распаковать файл .gz с помощью PHP?
- 18. Как создать файл setup.py, который использует tar-файл
- 19. создать tar файл программно в java
- 20. Как создать статическую команду tar
- 21. как распаковать мой файл с расширением .gz
- 22. создать файл обработан файл
- 23. untar file.tar.gz и непосредственно создайте файл gz (file_1.gz и file_2.gz) из файлов untar с одной командой
- 24. Чтобы создать файл tar внутри скрипта
- 25. Сплит .gz-файл в несколько сжатых (.gz) файлов 1GB
- 26. Как создать сжатые архивы tar с помощью compress/gzip и archive/tar?
- 27. Linux tar - просто создайте файл .snar
- 28. Получить большое содержимое TAR (gz) -файла по уровням dir
- 29. Как создать tar-файл GZip из командной строки
- 30. Как загрузить и распаковать файл Sitemap gz в C#?
насчет тарирования процесса? – user3376246
Взгляните на расширения сообщества powershell https://pscx.codeplex.com/, у них есть скрипт write-tar. Я не знаю более простого способа сделать это, поскольку мне никогда не приходилось работать с файлами tar в Windows. – StephenP
Расширения сообщества Powershell теперь находятся на Github: https://github.com/Pscx/Pscx – garie