2009-07-28 11 views
2

groovyプログラムでディレクトリ全体を圧縮しようとしています。私はディレクトリを圧縮するためにビルドされたantターゲットを使用していましたが、通常はこれが動作しますが、時には2-3ファイルが使用されていますが、郵便番号は実際にはそれで中止されますこの?groovy使用中のファイルでディレクトリを圧縮する

ありがとうございます!

コード:

def ant = new AntBuilder() 
ant.zip(
    destfile: "C:/temp.zip", 
    basedir: "c:/Temp/" 
) 
+0

あなたは、一時ディレクトリを作成し、そのディレクトリに必要なファイルをコピーすることができ、その後、あなたがファイルが使用されていないことを知っていることを意味します... – Jon

+0

私はそれを試みましたが、コピーも失敗します。 – Autobyte

答えて

1

だから私は現在使用しているソリューションは、彼らが常に同じであるため、使用中のファイルを無視する...私は除外句に入れている、以下を参照してください:

def ant = new AntBuilder() 
ant.zip(
    destfile: "C:/Temp.zip", 
    basedir: "c:/Temp", 
    level: 9, 
    excludes: "**/file1.dat, **/file2.dat, **/file3.dat" 
) 

私はまだ解決策がありません。

0

主な問題は、作業ファイルを圧縮しながらアプリケーション(Firefox)を使用しているようだからです。

ZipOutputStreamなどを使用して独自のジップメカニズムを実装することもできますが、Firefoxを終了したり、すべてのファイルがロックフリーであることを定期的に確認しない限り、同じ問題が発生します。

+0

それは私が考えていたもので、ロックされているファイルは、とにかくfirefox環境のバックアップに不可欠ではありません - ありがとう! – Autobyte

1

私はGroovyやAntBuilderに慣れていませんが、VShadowプログラムを使用してディレクトリのボリュームシャドウコピーを作成し、そこからバックアップを実行できると思います。

ドライブCのボリュームシャドウコピーを作成します。

vshadow -p C:

vshadow -el =:

マウントシャドウコピー新しいドライブ文字としてShadowCopyId、Z:

ドライブZ:はC:のコピーで、ファイルを開くことができます。

そして、あなたが完了したら、シャドウコピーを削除します。

vshadow -ds = ShadowCopyId

関連する問題