批量传输文件的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。

posted on 2012-02-02 19:38  袁璞  阅读(2726)  评论(0)    收藏  举报

导航