Вопрос

Затем я заархивирую, а затем заархивирую список файлов на 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top