SCP和远程mkdir -p

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

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

时,它可以正常工作。

 ssh tam@192.168.174.43 mkdir -p /sample/xxxx

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


1
为什么不直接使用rsync? - Ignacio Vazquez-Abrams
你能给我更详细的解决方案吗?谢谢。 - Jessesiu
1个回答

5
我不知道“permission denied”错误可能来自哪里; 使用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接