2012-10-16 9 views
5

muszę kopiować pliki zip z komputera lokalnego i wklej w zdalnym komputerze i rozpakować te pliki na komputerze zdalnym.kopiowania i rozpakować pliki na komputerze zdalnym - mrówka

wiem, pierwsza część może być wykonana przy użyciu SCP (kopiować pliki zip z lokalnych i wklej w zdalnym komputerze), ale jak to zrobić drugą część używając mrówka?

Dzięki z góry

Odpowiedz

4

można użyć sshexec task zadzwonić komendy wiersza poleceń unzip na zdalnym komputerze (zakładając, że zdalne urządzenie ma rozpakować zainstalowany).

<!-- local directory containing the files to copy --> 
<property name="archives" location="C:\path\to\zipfiles" /> 
<property name="archives.destination" value="/home/testuser/archives" /> 
<property name="unzip.destination" value="/home/testuser/unpacked" /> 

<fileset id="zipfiles.to.copy" dir="${archives}" includes="*.zip" /> 

<!-- copy the archives to the remote server --> 
<scp todir="${user}:${password}@host.example.com:${archives.destination}"> 
    <fileset refid="zipfiles.to.copy" /> 
</scp> 

<!-- Build the command line for unzip - the idea here is to turn the local 
    paths into the corresponding paths on the remote, i.e. to turn 
    C:\path\to\zipfiles\file1.zip;C:\path\to\zipfiles\file2.zip... into 
    /home/testuser/archives/file1.zip /home/testuser/archives/file2.zip 

    For this to work there must be no spaces in any of the zipfile names. 
--> 
<pathconvert dirsep="/" pathsep=" " property="unzip.files" refid="zipfiles.to.copy"> 
    <map from="${archives}" to="${archives.destination}" /> 
</pathconvert> 

<!-- execute the command. Use the "-d" option to unzip so it will work 
    whatever the "current" directory on the remote side --> 
<sshexec host="host.example.com" username="${user}" password="${password}" 
    command="/bin/sh -c ' 
    for zipfile in ${unzip.files}; do 
     /usr/bin/unzip -d ${unzip.destination} $$zipfile ; done '" /> 

Komenda unzip może podjąć szereg innych opcji, zobacz jego man page dla pełnych szczegółów. Na przykład opcja -j zignoruje hierarchię katalogów wewnątrz plików zip i umieści wszystkie wyodrębnione pliki bezpośrednio w katalogu docelowym. I -o wymusi zastąpienie istniejących plików w katalogu docelowym bez pytania.

+0

można proszę mi dać przykład, w którym muszę rozpakować wszystkie pliki w jednym konkretnym katalogu i umieścić te rozpakowany plik w someother reż użyciu sshexec? – coolgokul

+0

@coolgokul Dodałem (mam nadzieję, że wyczerpujący) przykład. –

+0

niesamowity świetnie. działa dobrze. dwa pytania. 1. jak zrobić ten program, aby rozpakować wszystkie pliki w jednym folderze i przenieść wyodrębnione pliki do jednego katalogu.? 2. jeśli pliki są już rozpakowane w katalogu docelowym i jeśli spróbuję ponownie rozpakować, prosi o zamianę plików? jak zawsze ustawić tak dla wymiany plików? z góry dziękuję. – coolgokul

Powiązane problemy