2013-02-05 51 views
5

您好我有像 /ifshk5/BC_IP /項目/ T1 1073/T11073_RICljiR /拆分/ AG19_235/120225_I872_FCC0HN2ACXX_L8_RICljiRSYHSD2-1-IP AAPEK-17_1.fq.gzscp和遠程的mkdir -p

一些文件路徑

我需要從一個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/Fq中/ AS59_59304

+1

爲什麼不直接使用rsync? –

+0

你能給我更詳細的解決方案嗎?謝謝, – Jessesiu

回答

5

我沒有看到「許可被拒絕」錯誤可能來自哪裏;使用bash -x運行腳本查看導致錯誤的命令。也許這不是你所期望的。

也可以嘗試rsync,而不是重新發明輪子:

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

--dirs將創建遠程側必要的文件夾(如果有些地方發生故障,它會給你很好的錯誤消息)。

它甚至有可能與一個單一的呼籲盡一切努力rsync如果你有兩面相同的文件夾結構:

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

注意/路徑後!不要忽略它們。

rsync將找出哪些文件需要傳輸並僅複製那些文件。如果您只想傳輸子集,請使用--include-from