5

嗨,我有一些文件路径,例如 /ifshk5/BC_IP/PROJECT/T1 1073/T11073_RICljiR/split/AG19_235/120225_I872_FCC0HN2ACXX_L8_RICljiRSYHSD2-1-IP AAPEK-17_1.fq.gz

我需要将文件从一个 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 tam@192.168.174.43 mkdir -p $location
    scp -r $i tam@192.168.174.43:$location

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

它有一些问题,1.它不能工作总是显示权限被拒绝,请重试。但是当我直接输入

 ssh tam@192.168.174.43 mkdir -p /sample/xxxx

它可以工作,并且新的目录位置是正确的,它显示为 /opt/CLiMB/Storage3/ftp/ftp_climb/100033/T11073_RICekkR/Fq/AS59_59304

4

1 回答 1

5

我看不出“权限被拒绝”错误可能来自哪里;运行脚本bash -x以查看导致错误的命令。也许这不是你所期望的。

也尝试rsync而不是再次发明轮子:

rsync --dirs $i tam@192.168.171.34:$b

--dirs将在远程端创建必要的文件夹(当出现故障时它会给你很好的错误消息)。

rsync如果两侧的文件夹结构相同,甚至可以通过一次调用来完成所有操作:

rsync -avP /ifshk5/BC_IP/PROJECT/T11073/ tam@192.168.171.34:/opt/CLiMB/Storage3/ftp/ftp_climb/100033/

注意/后面的路径!不要忽略它们。

rsync将找出需要传输的文件并仅复制那些文件。如果您只想传输一个子集,请使用--include-from

于 2013-02-05T08:47:42.783 回答