tar (en Windows) una lista de archivos en c #
Pregunta
Luego, tar y gzip una lista de archivos en C #.
Necesito ayuda con cómo configurar los argumentos en tar.
Digamos que tengo tar.exe en una carpeta c: \ tar \ tar.exe y un método como el siguiente:
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();
}
}
Nota: la lista fileNamePathsToTar tiene las rutas completas de nombre de archivo unc y los archivos pueden estar en diferentes carpetas.
¿Alguien puede ayudarme con qué argumentos proporcionar?
También noto en la documentación:
-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)
No estoy seguro de cómo usar esto, pero si coloco el gzip.exe en la misma carpeta que tar.exe ¿puedo ejecutar mi tar y luego gzip de estos archivos todo en un solo paso ?
Update
Parece que solo puedo hacer que tar funcione en archivos en el mismo directorio que tar.exe si intento un nombre de ruta completo obtengo algo como:
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
He intentado con las barras diagonales en ambos sentidos \ o / y con comillas alrededor del camino completo sin alegría.
Gracias
Solución
para crear un archivo comprimido y gzip, debes usar czf como argumentos, entonces
p.StartInfo.Arguments = "czf";
o
p.StartInfo.Arguments = "-czf";
dependiendo de la versión tar.
para evitar el gzipping, elimine la 'z' de los argumentos.
ah, y será mejor que guardes una carpeta completa, como poner todo tu archivo en una carpeta llamada, por ejemplo, myfolder y tar esa carpeta, no su contenido.
Otros consejos
Para su información, hay una biblioteca tar administrada con fuente completa disponible en http://cheeso.members.winisp.net/srcview. aspx? dir = Tar & amp; file = Tar.cs
Hay un archivo MAKE que le permite compilar Tar.dll o Tar.exe. También hay una aplicación de muestra en VB.