Linux下通过shell脚本实现自动在两台机器间拷贝文件
环境配置
A地址:192.168.1.100
B地址:192.168.1.200
举例
A目录结构
home
|---bin
| |---server
| |---clent
| |---tools
|---lib
| |---libmyepool.so
| |---libmyepool.a
| |---libcmdline.so
| |---libcmdline.a
|---doc
|---README
|---API.txt
命令行模式
1、在A机器下拷贝home目录下的bin、lib和doc文件夹到B机器的home目录
cd /home
scp -r bin lib doc root@192.168.1.200:/home
2、在A机器下拷贝/home/lib目录下的所有.so文件到B机器的/home/lib目录
scp -r /home/lib/*.so root@192.168.1.200:/home/lib
3、在B机器下拷贝A的home目录下的bin文件夹到B机器的home目录
scp -r root@192.168.1.200:/home/bin /home
4、在B机器下拷贝A的/home/lib目录下的所有.so文件到B机器的/home/lib目录
scp -r root@192.168.1.200:/home/*.so /home/lib
shell脚本模式
1、在A机器下拷贝home目录下的bin、lib和doc文件夹到B机器的home目录
#!/bin/bash
#注意home/bin不能写成home/bin/,否则shell会报告找不到文件错误
TAGIT+="/home/bin /home/lib /home/doc"
expect -c"
spawn scp -r ${TAGIT} root@192.168.1.200:/home/.
expect{
\"assword\" {set timeout 3600; send \"root\r\";}
\"yes/no\" {set \"yes\r\"; exp_continue;}
}
expect eof"
2、在A机器下拷贝/home/lib目录下的所有.so文件到B机器的/home/lib目录
#!/bin/bash
#注意在shell脚本模式下不能写成下面的形式,否则shell会报告找不到文件错误
#TAGIT+="/home/lib/*.so"
#应该写成TAGIT+="/home/lib/libmyepool.so /home/lib/libcmdline.so"
#通过使用awk工具自动过滤出.so的文件,如下:
TAGIT+=""
sofiles=`ls -l /home/lib/*.so | awk '{print $NF}'`
for sof in ${sofiles}
do
TAGIT+="${sof} "
done
expect -c"
spawn scp -r ${TAGIT} root@192.168.1.200:/home/lib/.
expect{
\"assword\" {set timeout 3600; send \"root\r\";}
\"yes/no\" {set \"yes\r\"; exp_continue;}
}
expect eof"