我们远程一般拷贝数据都是创建了共享秘钥,这样拷贝的话就不用输入密码了,具体可以参考我前面的文章”Linux 下实现SSH互信--http://gaowenlong.blog.51cto.com/451336/1856951”;
我们将通过脚本获取LOCALBAKDIR目录下的文件的最后一下修改时间,将最新的修改时间的问题远程拷贝到RMT_HOST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#!/bin/bash
LOCALBAKDIR=
/OAFS/WEAVER_BACKUP
RMTRESTDIR=
/OAFS
RMT_HOST=192.168.6.38
RMT_USER=root
RMT_CMD=
"$(which ssh) $RMT_USER@$RMT_HOST"
#function is_alive 判断远程计算机是否通信正常
function
is_alive() {
`
which
ping
` -c 4 $RMT_HOST >
/dev/null
2>&1
if
[
"$?"
-
ne
0 ];
then
echo
2
else
echo
0
fi
}
function
mktmpdir() {
$RMT_CMD
mkdir
-p
/tmp/OAFS
}
function
rmvtmpdir() {
$RMT_CMD
rm
-rf
/tmp/OAFS/
*
}
function
get_last_targz() {
echo
$(
ls
-lt $LOCALBAKDIR |
awk
{
'print $9'
} |
grep
-
v
^$ |
head
-n 1)
}
function
copy() {
yum
install
-y openssh-clients >
/dev/null
2>&1
$RMT_CMD yum
install
-y openssh-clients >
/dev/null
2>&1
scp
-q $LOCALBAKDIR/$(get_last_targz) $RMT_USER@$RMT_HOST:
/tmp/OAFS/
}
if
[
"$(is_alive)"
-
eq
0 ];
then
mktmpdir
copy
rmvtmpdir
else
echo
"$RMT_HOST can not be accessed via port 22, please check"
fi
|
最后我们通过脚本获取LOCALBAKDIR目录下的文件名来判断是否为最新的文件(文件名是以日期格式命名),将最新的修改时间的问题远程拷贝到RMT_HOST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#!/bin/bash
LOCALBAKDIR=
/OAFS/WEAVER_BACKUP
RMTRESTDIR=
/OAFS
RMT_HOST=192.168.6.38
RMT_USER=root
RMT_CMD=
"$(which ssh) $RMT_USER@$RMT_HOST"
function
is_alive() {
`
which
ping
` -c 4 $RMT_HOST >
/dev/null
2>&1
if
[
"$?"
-
ne
0 ];
then
echo
2
else
echo
0
fi
}
function
mktmpdir() {
$RMT_CMD
mkdir
-p
/tmp/OAFS
}
function
rmvtmpdir() {
$RMT_CMD
rm
-rf
/tmp/OAFS/
*
}
function
get_last_targz() {
echo
$(
ls
$LOCALBAKDIR |
awk
'{match($0,/.{4}-.{2}-.{2}/,a);b[a[0]]=$0;y=a[0]>y?a[0]:y}END{print b[y]}'
)
}
function
copy() {
yum
install
-y openssh-clients >
/dev/null
2>&1
$RMT_CMD yum
install
-y openssh-clients >
/dev/null
2>&1
scp
-q $LOCALBAKDIR/$(get_last_targz) $RMT_USER@$RMT_HOST:
/tmp/OAFS/
}
if
[
"$(is_alive)"
-
eq
0 ];
then
mktmpdir
copy
rmvtmpdir
else
echo
"$RMT_HOST can not be accessed via port 22, please check"
fi
|
本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1858096,如需转载请自行联系原作者