linux/unix系统间文备份脚本

这是我之前写的一个shell脚本,用于linux/unix系统间的文件自动备份。

脚本的主要功能有:

  1. 用于不同服务器间当天的文件的同步或拷贝;需要expect命令支持,RHEL和AIX测试正常,需要expect命令支持(unix系统需要修改脚本第一行的#!/bin/bash为系统SHELL);

使用要求:

系统expect命令可用;目标(远程)设备文件夹存在且可有相应权限。
适用情况(以下场景测试正常):
        一台设备同一文件夹向一台或多台远程设备相同或不同文件夹拷贝文件
        一台设备不同文件夹向一台或多台远程设备相同或不同文件夹拷贝文件
        AIX系统间文件非实时同步
        AIX和RHEL系统间文件非实时同步
        RHEL系统间文件非实时同步

使用前请先进行测试。

aix_trans.sh脚本代码如下:

#!/bin/bash
#Author:ZJ
#QQ:1037509307
#DateTime: 2016-07-09 01:41:14
#Description:
#用于不同服务器间当天的文件的同步或拷贝;需要expect命令支持,RHEL和AIX测试正常,需要expect命令支持。
#aix系统需要修改头文件;
#使用要求:系统expect命令可用;目标(远程)设备文件夹存在且可访问。
#适用情况:
#一台设备同一文件夹向一台或多台远程设备相同或不同文件夹拷贝文件
#一台设备不同文件夹向一台或多台远程设备相同或不同文件夹拷贝文件
#Version: v1.3
########################################源设备信息##########################################
#源设备文件路径1 (路径最后不要加斜线/)
Source_Path_1=/usr/appsoft/EasyCfg/system_check/warnlog
#源设备文件压缩包名称1
File_Name_1=file1.zip

#若需要同步该设备的其他文件夹,请按照上述格式继续添加变量即可,示例
#源设备文件路径2
#Source_Path_2=xxxx
#源设备文件压缩包名称2
#File_Name_2=file2.zip

###################################第一台目标设备信息#######################################
#目标设备IP地址
Target_IP_A=192.168.101.206
#目标设备密码
[email protected]
#目标设备文件存放路径(请确保该文件夹存在且可被访问)
Target_Path_A1=/usr/appsoft/jieya

#若需要将文件同步到该设备的不同文件夹下,请继续添加文件存放路径即可变量即可,示例
#Target_Path_A2=/usr/appsoft/jieya1
#Target_Path_A3=/usr/appsoft/jieya2

#若需要添加其他目标设备,请按照“第一台目标设备信息”进行添加,示例:
###################################第二台目标设备信息#######################################
#目标设备IP地址
#Target_IP_B=192.168.101.206
#目标设备密码
#[email protected]
#目标设备文件存放路径(请确保该文件夹存在且可被访问)
#Target_Path_B1=/usr/appsoft/jieya
############################################################################################

Get_Syslog(){
LANG=EN
Month=`date +%b`
Day=`date +%e`
Ip=$1
PASSWD=$2
Source_Path=$3
Target_Path=$4
File_Name=$5
cd "${Source_Path}"
ls -l | egrep "${Month}[[:space:]]+${Day}" | awk ‘{print $9}‘ | xargs zip -r ${File_Name}
expect -c "
set timeout -1
spawn scp -r -p ${Source_Path}/${File_Name} [email protected]${Ip}:${Target_Path}
expect {
\"*yes/no)?\" {send \"yes\r\";exp_continue}
\"*password:\" {send \"${PASSWD}\r\";exp_continue}
\"*unreachable\" {exit 1}
\"*Permission denied*\" {exit 2}
\"*No route to host*\" {exit 3}
\"*failure*\" {exit 4}
\"*No such file or directory*\" {exit 5}
\"*No match*\" {exit 6}
\"*failed*\" {exit 7}
expect eof
}

spawn ssh [email protected]${Ip} cd $Target_Path && unzip -o $File_Name -d $Target_Path && rm -rf $Target_Path/$File_Name
expect {
\"*yes/no)?\" {send \"yes\r\";exp_continue}
\"*password:\" {send \"${PASSWD}\r\";exp_continue}
\"*unreachable\" {exit 1}
\"*Permission denied*\" {exit 2}
\"*No route to host*\" {exit 3}
\"*failure*\" {exit 4}
\"*No such file or directory*\" {exit 5}
\"*No match*\" {exit 6}
\"*failed*\" {exit 7}
expect eof
}"

} #Get_Syslog右括号

#Tips:
#Get_Syslog "目标主机IP" "目标主机密码" "源主机文件路径" "目标主机文件路径" "压缩包名称"
#如果需要传送多个文件夹的文件,按照下面的命令格式依次添加即可
Get_Syslog "${Target_IP_A}" "${Target_Passwd_A}" "${Source_Path_1}" "${Target_Path_A1}" "${File_Name_1}"
#示例
#Get_Syslog "$Target_IP_A" "$Target_Passwd_A" "$WEB_Path_From_2" "$Target_Path_A1" "$File_Name_2"
时间: 2024-07-29 03:58:18

linux/unix系统间文备份脚本的相关文章

Linux/UNIX进程间的通信(1)

进程间的通信(1) 进程间的通信IPC(InterProcessCommunication )主要有以下不同形式: 半双工管道和FIFO:全双工管道和命名全双工管道:消息队列,信号量和共享存储:套接字和STREAMS 管道 pipe函数 当从一个进程连接到另一个进程时,我们使用术语管道.我们通常是把一个进程的输出通过管道连接到另一个进程的输入. 管道是由调用pipe函数创建的: #include<unistd.h> int pipe(intpipefd[2]); 经由参数pipefd返回两个文

面向 Java 开发与测试人员的远程执行 Linux/UNIX 系统上任务的框架 -- sshxcu

软件开发与测试人员常常会在远程 Linux/UNIX 系统上执行命令或脚本,有时还会有批量执行任务的需求.常见的办法是通过本地工具(例如 Putty)连接远程计算机,输入命令执行,但是当遇到需要集成这些任务到代码或者开发.测试框架中时,往往就没有很好的解决方案了.sshxcute 就是这样一个框架工具集,它基于 JSCH 构建,允许工程师利用 Java 代码通过 SSH 连接远程批量执行 Linux/UNIX 系统上的命令或者脚本,同时加入了判断成功与否,取回输出等多种实用功能.sshxcute

在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题

iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码不同而引起的,这时可以使用iconv进行编码转换,从而解决乱码问题. 解决文本文件乱码问题分3步:1.确定文件编码,2.确定iconv是否支持此编码的转换,3.确定Linux/Unix操作系统编码,4.转换文件编码为与系统编码一致:下面通过对test.txt文件来举例. 1. 使用file命令来确定

《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)

<Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h>文件中的常量. 通过cat 命令查看: [email protected]:~/Code/tlpi$ cat /usr/include/limits.h /* Copyright (C) 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2005 Free Software

《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)

<Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候都会发生缓冲.通过缓冲可以在一定程度上将用户空间与实际的物理设备分离,还可以减少内核访问磁盘的次数. 先来看看关于内核缓冲区高速缓冲:read和write调用在对磁盘文件进行操作的时候不会直接访问磁盘,如下图所示. 例如:write(fd, "abc", 3) write调用会将"

[转载] Linux/Unix 系统负载原理解析[英文]

PDF下载:http://vdisk.weibo.com/s/cULRe2mYCQsPz/1407491911 [转载] http://yuxu9710108.blog.163.com/blog/static/23751534201022593028822/ CALC_LOAD() calc_load()工作原理 In this two part-series I want to explore the use of averages in performance analysis and ca

《Linux/Unix系统编程手册》读书笔记9(文件属性)

<Linux/Unix系统编程手册>读书笔记 目录 在Linux里,万物皆文件.所以文件系统在Linux系统占有重要的地位.本文主要介绍的是文件的属性,只是稍微提及一下文件系统,日后如果有更深入的研究一定会写出来. 下图为磁盘分区与文件系统的关系 文件系统中的文件(目录)在i-node表上都有唯一的记录(i-node).i-node通过数据块指针指向数据块,这些数据块就是该i-node对应的文件的数据. i-node与数据块的关系如下: 因为Linux支持很多类型的文件系统,但是每种文件系统的

Linux/Unix系统编程手册--SOCKET章节读书笔记

SOCKET章节读书笔记 强烈推荐Linux/Unix系统编程手册,号称超越APUE的神书. backlog含义 #include <sys/socket.h> int listen(int socketfd, int backlog) backlog参数限制未决连接(未accept)的数量,在这个数量之内,connect会立刻成功. Linux上上限为128,定义在 udp已连接socket udp socket也是可以调用connect()的,这种叫已连接socket,内核会记录这个soc

Linux/UNIX系统编程手册 PDF下载

网盘下载地址:Linux/UNIX系统编程手册 PDF下载 – 易分享电子书PDF资源网 作者: Michael Kerrisk 出版社: 人民邮电出版社 原作名: The Linux Programming Interface: A Linux and UNIX System Programming Handbook 译者: 孙剑 许从年 董健 / 孙余强 郭光伟 陈舸 出版年: 2014-1 页数: 1176 定价: 158 装帧: 平装 内容简介 · · · · · · <linux/un