tar (su Windows) un elenco di file in c #
Domanda
Poi ho tar e poi gzip un elenco di file in C #.
Ho bisogno di aiuto per impostare gli argomenti su tar.
Dire che ho tar.exe in una cartella c: \ tar \ tar.exe e un metodo come il seguente:
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: l'elenco fileNamePathsToTar contiene tutti i percorsi unc nome file e i file possono trovarsi in cartelle diverse.
Qualcuno può aiutare con quali argomenti fornire.
Inoltre noto nella documentazione:
-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)
Non sono sicuro di come utilizzarlo, ma se inserisco gzip.exe nella stessa cartella di tar.exe posso eseguire il mio tar e quindi gzip di questi file in un solo passaggio ?
Aggiorna
Mi sembra di far funzionare tar solo sui file nella stessa directory di tar.exe se provo un nome percorso completo ottengo qualcosa del tipo:
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
Ho provato con le barre in entrambi i modi \ o / e con le virgolette in tutto il percorso senza gioia.
Grazie
Soluzione
per creare un archivio e decomprimerlo, dovresti usare czf come argomento, quindi
p.StartInfo.Arguments = "czf";
o
p.StartInfo.Arguments = "-czf";
a seconda della versione tar.
per evitare il gzipping, rimuovi la "z" dagli argomenti.
ah, e faresti meglio a tar un'intera cartella, come mettere tutti i tuoi file in una cartella denominata, ad esempio myfolder e tar quella cartella, non il suo contenuto.
Altri suggerimenti
Cordiali saluti, c'è una libreria tar gestita con sorgente completa disponibile su http://cheeso.members.winisp.net/srcview. ? aspx dir = Tar & amp; file = Tar.cs
Esiste un makefile che ti consente di compilare Tar.dll o Tar.exe. C'è anche un'app di esempio in VB.