Linux下通过shell脚本实现自动在两台机器间拷贝文件
环境配置
A地址:192.168.1.100B地址: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 /homescp -r bin lib doc root@192.168.1.200:/home2、在A机器下拷贝/home/lib目录下的所有.so文件到B机器的/home/lib目录scp -r /home/lib/*.so root@192.168.1.200:/home/lib3、在B机器下拷贝A的home目录下的bin文件夹到B机器的home目录scp -r root@192.168.1.200:/home/bin /home4、在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}doTAGIT+="${sof} "doneexpect -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"