Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ANT] copy task op dir met "veeeel" files

Pagina: 1
Acties:

Onderwerpen


  • bille
  • Registratie: Mei 2000
  • Laatst online: 20-11 16:38

bille

Don't call me Buff

Topicstarter
Wat ik probeer: via de Ant task Copy het kopieren van files van dirA naar dirB.

op de cmdline gaat dat prima met:
#cp -rf -t dirB dirA/**


nu via een ant task:
XML:
1
2
3
<copy todir="${todir}" overwrite="true" >
    <fileset dir="${fromdir}"/>
</copy>


via het runnen van de task:
copy: Copying 1332 files to /home/site/www/test


en dan onherroepelijk:
BUILD FAILED
/usr/local/staff/bcadmin/build.xml:74: Execute failed: java.io.IOException: java.io.IOException: Argument list too long


Ok dan zijn er wellicht andere opties:
XML:
1
2
3
<exec executable="cp">
    <arg line="-rf -t ${todir} ${fromdir}/**" />
</exec>


Geeft de mega irritante fout:
cannot stat '/usr/local/staff/bcadmin/deploy/project/revision-xx/**' file not found
Wat er op lijkt dat Ant niet de daadwerkelijke cmdline regel uitvoert maar toch zelf ook iets toevoegd aan de cmd line.

Dan is er nog een laatste optie die ik getracht heb te laten werken en dat is met het find cmd.
XML:
1
2
3
<exec executable="find">
    <arg line="${fromdir} -type f -exec cp '{}' -rf -t ${todir} +" />
</exec>


Helaas geeft dit niet het gewenste resultaat omdat het alle files zonder path kopieren en ik dus 1332 files in 1 directory krijg in plaats van de directory structuur.

Ultra Pilammo 6666Mhz AMD, 4251Mbit/s RAM, Gefors V6666 MegaTurbo, 43" TFS, Ultra 80Gig Firewire netwerkkaart en 5D geluid met 66 speakers in 5 dimensies


  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 05:34

Kettrick

Rantmeister!

Misschien kan je rsync vanuit ant gebruiken :? , anders misschien meerdere filesets maken, a*,b*, etc ?

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Expansie van de glob ** (en ook *) is voor zover ik weet een feature van je shell, niet van cp zelf. In dit geval probeert cp dus simpelweg een file genaamd /usr/local/staff/bcadmin/deploy/project/revision-xx/** te kopieren, en die file bestaat niet. Je zal dus cp via een shell moeten aanroepen. Dus iets als
XML:
1
2
3
<exec executable="/bin/bash">
    <arg line="-c 'cp -rf -t ${todir} ${fromdir}/**'" />
</exec>

  • bille
  • Registratie: Mei 2000
  • Laatst online: 20-11 16:38

bille

Don't call me Buff

Topicstarter
Remus schreef op vrijdag 21 oktober 2011 @ 10:33:
Expansie van de glob ** (en ook *) is voor zover ik weet een feature van je shell, niet van cp zelf. In dit geval probeert cp dus simpelweg een file genaamd /usr/local/staff/bcadmin/deploy/project/revision-xx/** te kopieren, en die file bestaat niet. Je zal dus cp via een shell moeten aanroepen. Dus iets als
XML:
1
2
3
<exec executable="/bin/bash">
    <arg line="-c 'cp -rf -t ${todir} ${fromdir}/**'" />
</exec>
koning!

Ultra Pilammo 6666Mhz AMD, 4251Mbit/s RAM, Gefors V6666 MegaTurbo, 43" TFS, Ultra 80Gig Firewire netwerkkaart en 5D geluid met 66 speakers in 5 dimensies