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
时间: 2024-10-05 04:19:34

Linux+Shell获取及拷贝最新数据到远程设备的相关文章

Linux+Shell获取及拷贝最新备份数据

前面我们介绍了一些脚本配置,今天我们介绍一下,使用Shell脚本如何将指定目录下的最新的文件拷贝到指定目录,我们拷贝前的文件都是压缩文件,而且以备份的日期进行命名的,我们今天介绍两种方式,第一种就是通过文件的最后一次修改时间来判断移动,第二种就是通过获取文件名来进行判断拷贝,具体见下: 我们首先说一下备份脚本,因为我们的源文件是压缩文件,所以介绍一下备份脚本文件: 我们是将/OAFS目录下的ABC目录进行压缩,然后以文件名+日期进行命名 #!/bin/bash SOURCE=/OAFS/WEAV

linux操作系统崩溃, 如何拷贝其中数据

场景介绍: 由于使用root权限, 删除了一个Libpthread.so.*的文件, 导致好多命令不能使用, 甚至ls, cp 等. 没办法 ,重启后操作系统居然崩溃. 里面有很重要数据, 所以不得不想办法拷贝出来 操作系统为ubuntu12.04. 恢复过程: 首先想到的是把这个盘挂载到另一个linux系统中. 这样, 用fdisk -l可以看到这个系统盘 看到的内容也只是一个/dev/sdb整个硬盘的情况, 里面的分区什么的, 都没有. 当然是用mount 挂载这个硬盘了, 有时候还要指定文

linux shell 获取路径中指定信息

file=/home/data/hunan/hn.2015-9-11.log.bbk file_log_name=`basename $file`  ## file_log_name 就等于 hn.2015-9-11.log.bbk file_test=`basename $file .bbk` ## file_test 就等于 hn.2015-9-11.log no_file_path=${file%/*}   ### 获取文件所在的路径  即 /home/data/hunan city=${

Linux shell 获取上上月月末日期

v_curr_rq=`date +%Y%m%d` v_rq=`date -d "yesterday" +%Y%m%d` v_lm=`date +%Y%m01` v_lm_rq=`date -d "${v_lm} last day" +%Y%m%d` v_llm_rq=`date -d "${v_lm} last month last day" +%Y%m%d` #当前日期 echo ${v_curr_rq} #昨天日期 echo ${v_rq}

Linux Shell获取系统资源使用百分比(CentOS)

CPU使用率: top -b -n 1 | head -n 4 | grep "^Cpu(s)" | awk '{print $2}' | cut -d 'u' -f 1 内存使用率: free -m | grep '^-' | awk '{print $3/($3+$4)*100"%"}' IO使用率(DEVICE_PATH的值改成df -h出来的那些Filesystem名称即可): DEVICE_PATH=/dev/sda1;iostat -x -j PATH

linux shell 获取文件夹全文绝对路径

在ls中列出文件的绝对路径 ls | sed "s:^:`pwd`/:" # 就是在每行记录的开头加上当前路径 ps: #在所有行之前/后加入某个字符串 sed 's/^/string/g' file sed 's/$/string/g' file find $PWD -maxdepth 1 | xargs ls -ld # 列出当前目录下的所有文件(包括隐藏文件)的绝对路径, 对目录不做递归 find $PWD | xargs ls -ld # 递归列出当前目录下的所有文件(包括隐藏

Linux Shell 相关记录

http://www.tutorialspoint.com/unix/unix-shell.htm Linux Shell 获取脚本的所在目录的绝对路径 basedir=$(cd $(dirname $0); pwd;) echo $basedir shell 执行错误马上退出,而不是继续执行 set -e

shell获取时间的相关命令

Linux shell获取时间和时间间隔(ms级别) 说明:在进行一些性能测试的时候,有时候我们希望能计算一个程序运行的时间,有时候可能会自己写一个shell脚本方便进行一些性能测试的控制(比如希望能运行N次取平均值等),总之,这其中有一个需求可能就是获取一个时间戳或时间差. 1. Linux shell获取时间的相关命令 time命令:获取一个程序的执行时间,可以获取到实际运行时间以及程序在用户态和内核态分别的时间,大部分的性能测试,可能只需要关注实际时间. time命令的使用就很简单了,在原

gj的交换机在升级了ios之后最新数据不刷新,

下午2点开始升级5点结束,之后监控项获取不到最新数据,显示网络接口一直是down的状态,但是登上设备之后显示的是正常up状态, 怀疑是自动发现规则的问题,但是查看之后都是1个小时,应该不会, 这时候诡异的事情发生,什么都没做,这台机器感觉就像重新添加到系统一样,所有的监控项都消失了,然后通过自动发现又都生成了出来,不过这次数据就正常了,原来的历史数据都丢失了. 原文地址:https://www.cnblogs.com/0916m/p/11706287.html