批量传输文件的LinuxShell脚本

今天有一个需求是需要把一台linux服务器的东西拷贝到另一台服务器中去。要求原封不动的拷贝。

首先解决这个问题有两个方法一个是用RSYNC来做,使用方法如下:

http://blog.csdn.net/ak_2005/article/details/3768552

但是我刚刚接触linux不想用这么复杂的方法,而且现实的需求也不需要完全原封不动的拷贝,并且要拷贝的内容也不多。

所以尝试写了一个脚本来解决问题,这个脚本如下

#!/bin/bash
DIR="/root/"
TARGET_IP="......"
FILELIST=`ls ${DIR}`

cd ${DIR}

echo "start"
for filename in $FILELIST
do
  echo "$filename root@${TARGET_IP}:${DIR}${filename}"
  scp $filename root@${TARGET_IP}:${DIR}${filename}
  echo "${filename} done"
done

 

在这个过程当中走了不少弯路,现在记录一下,

1脚本的第一行是指执行这个脚本的一个执行器,在/bin/下面有一个可执行的bash文件。

2变量声明,变量声明一般用大写和下划线,而且等号两边不能有空格,否则会被解释为命令。

3如果要执行一个命令并且接受结果可以用``这个符号,注意不是单引号。

4 for in do...done

5 脚本的cd命令会执行,但是在执行完脚本后会切换回去。这个可能是因为cd是在子进程中执行的。

6 这个脚本不支持文件夹拷贝,而且需要每次输入密码,这里有2个密码的解决方案

一个是expect的:http://linux.chinaitlab.com/SHELL/870042.html

一个是用公钥建立信任的:http://wenku.baidu.com/view/c83d3234eefdc8d376ee321c.html

脚本写好后没有执行权限,权限分为三种r read, w write, x execute可用ls -l看到

其中第一个字母表示文件类型,后面的3组权限分别是针对use(拥有者), group, other的。

可以用chmod u+x [filename]为拥有者增加执行权限,chmod 777 [filename]则为增加全部权限,因为777的二进制是111 111 111,代表所有权限为true。

转载于:https://www.cnblogs.com/yuanpu/archive/2012/02/02/linuxshellscp.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值