1

Informatica Server のディレクトリ内にいくつかのファイルがあります。これらのファイルは、ファイル名に基づいて別のサーバーに別のディレクトリに転送する必要があります。

2 つのファイルがありa.dat_1、Informatica サーバーでb.dat_2呼び出されたディレクトリ内にあるとします。low

lowこのディレクトリを別のサーバーに転送する必要があります。ファイルa.dat_1は、たとえばディレクトリに移動し、 という別のディレクトリに移動します。これは Python で行う必要があります。localb.dat_2local2

Paramiko を使用して単純な転送を行いましたが、ディレクトリは使用しませんでした。また、local や local2 のような別のディレクトリではありません。

4

3 に答える 3

1

tarディレクトリからアーカイブを作成できます。このためにシェルコマンドを使用します

tar -cvf archive_name.tar directory_name

次に、このアーカイブを別のマシンに転送し、untarそこで次のようにします。

tar -xvf archive_name.tar

転送を高速化するために、tarアーカイブでgzipまたはその他のコンプレッサーを使用することもできます。

于 2012-10-09T14:15:22.173 に答える
1

この SOディレクトリが paramiko に転送されるとします。ディレクトリを一括操作としてコピーすることはできません。

私だったら、一時フォルダーを作成し、ソース ファイルをコピー先の要件と互換性のあるディレクトリ構造にコピーすることから始めます。次に、yakxxxが示唆するようにそれらを圧縮し、Paramiko SFTP を使用して圧縮ファイルをネットワーク経由で送信し、Paramiko SSH を使用して反対側で圧縮解除します。

于 2012-10-09T15:15:43.110 に答える
1

私は毎日ファイルを転送するために同様のことをしています。yakxxx が示唆するように、ファイルを圧縮してから転送します。私が行うことの例 (Windows マシン上):

import zipfile
from glob import glob as gg

files = gg('path*.txt')
# open zip file (create it, or open if already exists)
zFile = zipfile.ZipFile('FileName.zip','w') 

# zip files on local machine
[zFile.write(r,r,zipfile.ZIP_DEFLATED) for r in files]

または、zipfile が既に存在し、新しいファイルを追加する場合。

zFile = zipfile.ZipFile('FileName.zip','a')

# List files already zipped.  
done = zipfile.ZipFile('FileName.zip','r').namelist()

# zip file into zip file.  
[zFile.write(r,r,zipfile.ZIP_DEFLATED) for r in files if r not in done]

この zip ファイルを paramiko 経由でリモート マシンにプッシュします。

---------------

編集

参考までに、zip ファイルに書き込むときは注意が必要です。圧縮したいファイルがあるディレクトリ内で実行していると仮定して、これを書きました。そうでない場合は、次を使用する必要があります。

import os
zFile.write(r,os.path.basename(r),zipfile.ZIP_DEFLATED)
于 2012-10-09T19:05:34.120 に答える