tar (в Windows) список файлов в C#
Вопрос
Затем я заархивирую, а затем заархивирую список файлов на C#.
Мне нужна помощь в том, как установить аргументы в tar.
Скажем, у меня есть tar.exe в папке c: ar ar.exe и такой метод:
private void RunTar(string outputFileName, List<string> fileNamePaths)
{
using (Process p = new Process())
{
p.StartInfo.FileName = @"c:\tar\tar.exe";
p.StartInfo.Arguments = //;
p.Start();
p.WaitForExit();
}
}
Примечание:список fileNamePathsToTar содержит полные пути к именам файлов в формате UNC, и файлы могут находиться в разных папках.
Может кто-нибудь, пожалуйста, помогите с чем аргументы обеспечить.
Также я замечаю в документации:
-z, --gzip, --ungzip
filter the archive through gzip
-Z, --compress, --uncompress
filter the archive through compress
--use-compress-program=PROG
filter through PROG (must accept -d)
Не знаю, как это использовать, но если я помещу gzip.exe в ту же папку, что и tar.exe могу ли я выполнить свой tar, а затем сжать эти файлы за один шаг??
Обновлять
Кажется, я могу заставить tar работать с файлами в том же каталоге, что и tar.exe, только если я попробую указать полный путь, я получу что-то вроде:
C:\Tar Test>tar -cf out.tar c:/Tar Test/Text/t1.txt
tar: Cannot add file c:/Tar: No such file or directory
tar: Cannot add file Test/Text/t1.txt: No such file or directory
tar: Error exit delayed from previous errors
Я пробовал использовать косую черту в обоих направлениях \ или /, а полный путь в кавычках — безрезультатно.
Спасибо
Решение
чтобы создать архив и сжать его, вам следует использовать czf в качестве аргумента, поэтому
p.StartInfo.Arguments = "czf";
или
p.StartInfo.Arguments = "-czf";
в зависимости от версии tar.
чтобы избежать сжатия, удалите букву «z» из аргументов.
ах, и вам лучше заархивировать всю папку, например, поместить весь файл в папку с именем, например, myfolder, и заархивировать эту папку, а не ее содержимое.
Другие советы
К вашему сведению, есть управляемая библиотека tar с полным исходным кодом, доступная по адресуhttp://cheeso.members.winisp.net/srcview.aspx?dir=Tar&file=Tar.cs
Существует make-файл, позволяющий собрать Tar.dll или Tar.exe.Также есть пример приложения на VB.