Linux+Shell获取及拷贝最新数据到远程设备

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux+Shell获取及拷贝最新数据到远程设备相关的知识,希望对你有一定的参考价值。

Linux+Shell获取及拷贝最新数据到远程设备

我们远程一般拷贝数据都是创建了共享秘钥,这样拷贝的话就不用输入密码了,具体可以参考我前面的文章”Linux 下实现SSH互信--http://gaowenlong.blog.51cto.com/451336/1856951”;

我们将通过脚本获取LOCALBAKDIR目录下的文件的最后一下修改时间,将最新的修改时间的问题远程拷贝到RMT_HOST

#!/bin/bash
LOCALBAKDIR=/OAFS/WEAVER_BACKUP
RMTRESTDIR=/OAFS
RMT_HOST=192.168.6.38
RMT_USER=root
RMT_CMD="$(which ssh) [email protected]$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) [email protected]$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

#!/bin/bash
LOCALBAKDIR=/OAFS/WEAVER_BACKUP
RMTRESTDIR=/OAFS
RMT_HOST=192.168.6.38
RMT_USER=root
RMT_CMD="$(which ssh) [email protected]$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) [email protected]$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


本文出自 “高文龙” 博客,谢绝转载!

以上是关于Linux+Shell获取及拷贝最新数据到远程设备的主要内容,如果未能解决你的问题,请参考以下文章

用Shell编程,判断文件是否字符设备文件,如果是将其拷贝到/dev目录下

VBS获取指定目录下最新文件拷贝然后以当前日期命名

本机是WINDOWS 远程机是LINUX 怎么把远程文件拷贝到本机中

Linux常用Shell脚本,值得学习及收藏

Linux文件拷贝命令

linux远程拷贝命令及not a regular file 解决方案