2013-02-05 12 views
5

こんにちは、私は持っている /ifshk5/BC_IP/PROJECT/T1 1073/T11073_RICljiR /スプリット/ AG19_235/120225_I872_FCC0HN2ACXX_L8_RICljiRSYHSD2-1-IP AAPEK-17_1.fq.gzSCPとリモートは、mkdir -p

のようないくつかのファイルパス

私は1つのftpサーバから他のftpサーバにファイルをコピーする必要があります。サーバーに存在しない場合はディレクトリを作成する必要があります。 私はそれはいくつかの問題を抱えている。このコード

#! /bin/bash 

while read myline 
do 
    for i in $myline 
    do 
    if [ -f $i ] 
    then 
    location=$(echo "$i" | awk -F "/" '{ print "", $6, $7, $8 }' OFS="/") 
     #location shows /T11073_RICekkR/Fq/AS59_59304 
    location="/opt/CLiMB/Storage3/ftp/ftp_climb/100033"$location 
    echo $location 

    ssh [email protected] mkdir -p $location 
    scp -r $i [email protected]:$location 

    fi 
    done 
done < /ifshk5/BC_IP/PROJECT/T11073/T11073_all_3254.fq.list 

を実行して、1。それは常に動作しないことができ、その後、それらのファイルが含まれているサーバが許可拒否を示してログインし、もう一度試してください。 しかし、ときに私はそれが動作することができますタイプ

ssh [email protected] mkdir -p /sample/xxxx 

を指示し、新しいディレクトリの場所が正しいそれは は/ opt /登る/ Storage3/FTP/ftp_climb/100033/T11073_RICekkR /体F q/AS59_59304よう

+1

なぜrsyncを使用しないのですか? –

+0

詳細ソリューションを教えていただけますか?ありがとう、 – Jessesiu

答えて

5

を示し私は "許可が拒否されました"というエラーがどこから来るのか分かりません。 bash -xでスクリプトを実行して、エラーの原因となるコマンドを確認します。たぶんそれはあなたが期待するものではないでしょう。

また、代わりに再びホイールを発明のrsyncを試してみてください。

rsync --dirs $i [email protected]:$b 

--dirsは、リモート側で必要なフォルダを作成します(と何かが失敗したとき、それはあなたに良いエラーメッセージを与えます)。

それも、あなたが両側に同じフォルダ構造を持っている場合rsyncに1回の呼び出しですべてを行うことも可能かもしれません:パスの後

rsync -avP /ifshk5/BC_IP/PROJECT/T11073/ [email protected]:/opt/CLiMB/Storage3/ftp/ftp_climb/100033/ 

注意/!それらを省略しないでください。

rsyncは、転送が必要なファイルを特定し、それらのファイルのみをコピーします。サブセットのみを転送する場合は、--include-fromを使用してください。