shell脚本通过scp命令远程拷贝文件

5 篇文章 0 订阅

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"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值