1. 背景

现在有一个正在使用的服务器, 需要对服务器上的数据库数据、实验室文件以及采购平台文件进行备份,

将备份文件存储到另外一个服务器上, 要求留存最近七天的备份文件.

2.详细步骤

2.1 备份环境

  • 在新服务器创建备份目录: mkdir /opt/backup
  • 目录权限: chmod 700 /opt/backup

2.2 SSH免密

  • 旧服务器生成密钥对: ssh-keygen -t rsa
  • 配置免密(需要输入备份服务器密码): ssh-copy-id -i ~/.ssh/id_rsa.pub user@new_server_ip
  • 验证能否直接登录: ssh user@new_server_ip

2.3 备份脚本

vim /opt/backup.sh

#!/bin/bash

# 备份日期
BACKUP_DATE=$(date +%Y%m%d)
# 备份服务器信息
NEW_SERVER="user@new_server_ip"
# 数据库用户
MYSQL_USER="backup_user"
# 数据库密码
MYSQL_PASS="your_password"
# 现有服务器临时备份目录
BACKUP_DIR="/tmp/backup/${BACKUP_DATE}"
# 现有服务器日志文件目录(存备份过程中的日志)
BACKUP_LOG_DIR="/var/log/backup/"
# 备份服务器备份目录
BACKUP_TAR_DIR="/opt/backup/" # 创建临时目录
mkdir -p ${BACKUP_DIR} # 创建备份日志目录
mkdir -p ${BACKUP_LOG_DIR} {
# 备份MySQL数据库并压缩(-u和-p后面不要有空格)
mysqldump --single-transaction -u${MYSQL_USER} -p${MYSQL_PASS} --databases "db1" "db2" | gzip > ${BACKUP_DIR}/db_${BACKUP_DATE}.sql.gz # 备份采购文件
rsync -avz --delete /var/www/uploads/purchase/ ${BACKUP_DIR}/files-purchase/ # 备份实验室文件
rsync -avz --delete /var/www/uploads/lab/ ${BACKUP_DIR}/files-lab/ # 打包文件备份并压缩(${BACKUP_DIR}目录下现在有一个文件和两个文件夹)
tar czf ${BACKUP_DIR}/${BACKUP_DATE}.tar.gz -C ${BACKUP_DIR} . # 打包文件传输到备份服务器的BACKUP_TAR_DIR目录
scp -r ${BACKUP_DIR}/${BACKUP_DATE}.tar.gz ${NEW_SERVER}:${BACKUP_TAR_DIR} # 清理备份服务器旧备份(保留7天)
# -mindepth 是保护不会将${BACKUP_TAR_DIR}删除的,如果scp失败了目录日期是不会修改的
ssh ${NEW_SERVER} "find ${BACKUP_TAR_DIR} -mindepth 1 -type d -mtime +7 -exec rm -rf {} \;" # 清理临时文件
rm -rf ${BACKUP_DIR} # 输出完成,添加时间记录
echo "backup done. timedatectl:";
timedatectl;
} >> "${BACKUP_LOG_DIR}/${BACKUP_DATE}.log" 2>&1

2.4 脚本执行权限

chmod +x /opt/backup.sh

2.5 定时任务

echo "0 2 * * * root /opt/backup.sh" > /etc/cron.d/backup_job

2.6 恢复流程

根据实际情况可以现解压再覆盖, 覆盖前做好备份

  • 数据库: zcat /backup/db_20250408.sql.gz | mysql -u root -p
  • 文件: tar xzf /opt/backup/20231001.tar.gz -C /var/www/uploads/

centos简单文件备份的更多相关文章

  1. 基于腾讯云centos简单搭建VSFTP

    基于腾讯云centos7.3搭建VSFTP 环境分析: 基于vsftp服务在于云主机上,所以推荐使用FTP的PASV模式: FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动 ...

  2. 07 CentOS简单命令与XShell简单使用

    关机 poweroff 重启 init 6 查看ip地址 ifconfig 查看当前目录下的文件与目录 ls ll 判断命令是内部还是外部的类型 type ifconfig 通过file /sbin/ ...

  3. CentOS 简单命令

    一.启动级别 Linux系统设置系统启动模式的方式可以修改(必须要以root身份登录才能修改).修改系统启动模式的配置文件是   /etc/inittab. 我们在切换到root用户后,然后 vi / ...

  4. CentOS 简单学习 firewalld的使用

    1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...

  5. CentOS简单命令学习:date cal bc

    简单的shell指令: 1.日期的格式化显示: 2.日历的显示: 3.bc计算器: 使用Tab指令自动补全:

  6. Docker之centos 简单安装

    centos6因为系统自带的可执行的应用程序与 docker 包名字发生冲突,所以重新命名 docker 的RPM包名字为 docker-io. 首先卸载docker包 sudo yum -y rem ...

  7. CentOS 简单设置samba服务

    1.安装 yum -y install samba 2.设置配置文件 1) 备份Samba的配置文件:cp  /etc/samba/smb.conf  /etc/samba/smb.conf.bak ...

  8. centos简单的后台运行

    # 忽略输出文件 nohup java FileTest > /dev/null 2>&1 &

  9. centos 简单用户管理

    一.配置文件 /etc/passwd:存放用户信息,以“:”分割成7个部分 1.账号名称,用来对应UID: 2.早期密码存放位置,后来密码改存/etc/shadow中,以“x”代替: 3.UID,使用 ...

  10. centos简单命令备忘

    1.查看当前目录 [root@instance-aif30iaj bin]# df -h 2.查看指定目录 在命令后直接放目录名,比如查看"usr"目录使用情况: [root@in ...

随机推荐

  1. jdk8之stream原理及流创建、排序、转换等处理

    目录 一.为什么需要 Stream 二.什么是流 三.流的分类 1.有多种方式生成 Stream Source 2.流的操作类型 四.流的创建 1.数组和集合创建流 2.基本数值型流 3.数值流的构造 ...

  2. Jacko pg walkthrough Intermediate window

    nmap nmap -p- -A -sS 192.168.219.66 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-19 00:08 U ...

  3. Fail pg walkthrough Intermediate

    nmap ┌──(root㉿kali)-[/home/ftpuserr] └─# nmap -p- -A 192.168.159.126 Starting Nmap 7.94SVN ( https:/ ...

  4. VSCODE接入DeepSeek R1实现AI完成自动化脚本实战开发

    大家好,我是六哥,今天还是我们喜爱的DeepSeek的玩法,今天来个实战案例,和大家分享一下如何将DeepSeek接入VS Code,结合AI Toolkit插件完成自动化脚本的实战开发. 一.准备 ...

  5. 百思不得其解,DeepSeek怎么突然就比肩GPT了?

    >关注公众号**回复1**>>获取**一线.总监.高管<管理秘籍>** 之前大家都认为中美在AI领域的差距很大,谁曾想春节期间**DeepSeek横空出世**,直接给Op ...

  6. 深入剖析实体-关系模型(ER 图):理论与实践全解析

    title: 深入剖析实体-关系模型(ER 图):理论与实践全解析 date: 2025/2/8 updated: 2025/2/8 author: cmdragon excerpt: 实体-关系模型 ...

  7. Q:LISTAGG()函数用法笔记(oracle)

    .LISTAGG()函数作为普通函数使用时就是查询出来的结果列转为行 ☆LISTAGG 函数既是分析函数,也是聚合函数有两种用法:1.分析函数,如: row_number().rank().dense ...

  8. 使用guava的cache实现缓存

    一.maven <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  9. mysql之数据连接池

    数据库连接池 C3P0: 配置文件 <?xml version="1.0" encoding="UTF-8"?> <c3p0-config&g ...

  10. 移动硬盘插入win10检测到却不显示盘符解决方法

    1.开始菜单中的设置-----设备. 2.选择"蓝牙和其他设备" 3.在其他设备栏中就能看到检测到的移动硬盘,点击删除设备后重新插入移动硬盘即可在此电脑上显示盘符.