嗨,我有一些文件路径,如/ 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
Run Code Online (Sandbox Code Playgroud)
它有一些问题,1.它无法工作总是显示权限被拒绝,请再试一次.但当我直接打字
ssh tam@192.168.174.43 mkdir -p /sample/xxxx
Run Code Online (Sandbox Code Playgroud)
它可以工作,新的目录位置是正确的,它显示如/ opt/CLiMB/Storage3/ftp/ftp_climb/100033/T11073_RICekkR/Fq/AS59_59304
我没有看到"许可被拒绝"错误可能来自哪里; 运行脚本bash -x以查看导致错误的命令.也许这不是你所期望的.
也尝试rsync再次发明轮子:
rsync --dirs $i tam@192.168.171.34:$b
Run Code Online (Sandbox Code Playgroud)
--dirs 将在远程端创建必要的文件夹(当出现故障时,它将为您提供良好的错误消息).
rsync如果你在两边都有相同的文件夹结构,甚至可以通过一次调用来完成所有事情:
rsync -avP /ifshk5/BC_IP/PROJECT/T11073/ tam@192.168.171.34:/opt/CLiMB/Storage3/ftp/ftp_climb/100033/
Run Code Online (Sandbox Code Playgroud)
注意/路径之后!不要忽略它们.
rsync将确定需要传输哪些文件并仅复制那些文件.如果您只想传输一个子集,请使用--include-from
| 归档时间: |
|
| 查看次数: |
7263 次 |
| 最近记录: |