您的位置 首页 > 数码极客

〔linux下如何备份文件〕Linux如何备份

写在前面


  • 一般需求增量上线的时候,会备份应用和应用数据,保证升级失败也可以回退回去,今天和小伙伴聊聊数据备份的事。
  • 日常备份可以通过定时任务进行备份,也可以手动执行备份
  • 这里和小伙分享一些备份的脚本Demo,写的很粗。
  • 博文内容包括:日志备份,数据库备份(mySQL)。
  • 备份方式分为:物理备份、逻辑备份、远程差异备份。

等长大就明白了。”小时候总是被人这么说。但那是不折不扣的谎言。我对任何事都只能越来越不明白。……这的确令人不安。但在另一方面,正是因为这样,自己才没有失去对生的好奇这也是事实。 ——中岛敦《山月记》


一、日志文件备份

日志备份这里很简单,这里我们写一个shell脚本,通过脚本的方式进行,当然,如果需要,这个脚本可以配置到定时任务里。

┌──[root@liruilongs.gi]-[~] └─$ pwd /root ┌──[root@liruilongs.gi]-[~] └─$ mkdir bak_shell ┌──[root@liruilongs.gi]-[~] └─$ cd bak_shell/ ┌──[root@liruilongs.gi]-[~/bak_shell] └─$ vim bak_log.sh ┌──[root@liruilongs.gi]-[~/bak_shell] └─$ sh bak_log.sh ┌──[root@liruilongs.gi]-[~/bak_shell] └─$ cat bak_log.sh #!/bin/bash ###此脚本运用日期定义备份的文件名,方便与每天进行备份不重复 date=`date +"%Y%m%d%H%M%S"` if [ ! -f /tmp/log-$da ];then tar -zcPf /tmp/log-$da /var/log fi ┌──[root@liruilongs.gi]-[/tmp] └─$ cd /tmp/;ll -h | grep log-* -rw-r--r-- 1 root root 4.4M 11月 15 10:51 log-20211115110510. ┌──[root@liruilongs.gi]-[/tmp] └─$

二、数据库备份

关系数据库备份,这里我们用物理机直接操作,用容器也是一样的。

1、逻辑备份(SQL备份)

###安装MariaDB数据库,重启服务 ┌──[root@liruilongs.gi]-[/tmp] └─$ yum -y install mariadb mariadb-server ┌──[root@liruilongs.gi]-[/tmp] └─$ systemctl restart mariadb ####查看数据库服务的进程信息 ┌──[root@liruilongs.gi]-[/tmp] └─$ ss -ntulpa | grep mysql tcp LISTEN 0 50 *:3306 *:* users:(("mysqld",pid=52010,fd=14)) ┌──[root@liruilongs.gi]-[/tmp] └─$ # 登录测试下 ┌──[root@liruilongs.gi]-[/var/lib/mysql] └─$ mysql -uroot Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.68-MariaDB MariaDB Server copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases -> ; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set sec) MariaDB [(none)]> use test Database changed MariaDB [test]> show tables -> ; Empty set sec) MariaDB [test]>

mysqldump可以对mysql数据库中的库进行备份,一般的数据库都会提供相应的备份工具,比如MongoDB的mongodump

##mysqldump可以对数据库中的库进行备份 ##格式: mysqldump -u"用户名" --password="" 数据库名 > 备份名.sql ┌──[root@liruilongs.gi]-[/] └─$ mysqldump mysql > my ┌──[root@liruilongs.gi]-[/] └─$ ll | grep mysql* -rw-r--r-- 1 root root 514667 11月 15 15:52 my

脚本编写

┌──[root@liruilongs.gi]-[/] └─$ mkdir mysql;cd mysql ┌──[root@liruilongs.gi]-[/mysql] └─$ vim my ┌──[root@liruilongs.gi]-[/mysql] └─$ sh my ┌──[root@liruilongs.gi]-[/tmp] └─$ cd /tmp/;ls -h | grep *.sql my ┌──[root@liruilongs.gi]-[/tmp] └─$ cat /mysql/my #!/bin/bash ###date 指定备份数据名;iuser 指定登录数据库的用户 ###ipass 指定登录密码,默认为空;db 指定要备份的数据库 date=$(date +"%Y%m%d%H%M%S") iuser=root ipass= db=mysql ###文件在/tmp 下不存在时才会进行备份 if [ ! -f /tmp/$db-$da ];then mysqldump -u$iuser --password="$ipass" $db > /tmp/$db-$da fi ┌──[root@liruilongs.gi]-[/tmp] └─$

2、物理备份(buttaidong)

物理备份即直接备份相关文件,mysql默认地表数据相关文件在/var/lib/mysql中

┌──[root@liruilongs.gi]-[/tmp] └─$ cd /mysql ┌──[root@liruilongs.gi]-[/mysql] └─$ ls my ┌──[root@liruilongs.gi]-[/mysql] └─$ vim bak_my ┌──[root@liruilongs.gi]-[/mysql] └─$ sh bak_my tar: 从成员名中删除开头的“/” tar: 从成员名中删除开头的“/” tar: 从成员名中删除开头的“/” 。。。。。 ┌──[root@liruilongs.gi]-[/tmp] └─$ cd mysql/ ┌──[root@liruilongs.gi]-[/tmp/mysql] └─$ ls columns_priv.frm-20211115160950. proc.frm-20211115160950. columns_priv.MYD-20211115160950. proc.MYD-20211115160950. 。。。。。。 ┌──[root@liruilongs.gi]-[/mysql] └─$ cat bak_my #!/bin/bash ###对数据库中的mysql库下每一个表都进行打包备份;备份文件存放在/tmp/mysql目录下 date=$(date +"%Y%m%d%H%M%S") db_dir="/var/lib/mysql" db=mysql [ ! -d /tmp/$db ] && mkdir /tmp/$db for i in $(ls $db_dir/$db) do tar -zcf /tmp/$db/$i-$da $db_dir/$db/$i done ┌──[root@liruilongs.gi]-[/mysql] └─$

这个时候tar报错加了个 P参数就不报了,但是没必要,可以正常打包

3、差异备份 inotify+rsync

所谓差异备份,即通过inotify 来监听文件变化,通rsync来增量同步数据。
这里我们本机模拟一下,一般是备份到远程机器上的,备份前一定做ssh免密 ssh-copy-id root@192.168.26.55

部署安装rsync同步软件、inotifywait 监听软件

┌──[root@liruilongs.gi]-[/var/www/html] └─$ yum -y install rsync ┌──[root@liruilongs.gi]-[/mysql] └─$ yum search inotify-tools 已加载插件:fastestmirror Loading mirror speeds from cached hostfile ============================================== N/S matched: inotify-tools =============================================== ino : Command line utilities for inotify ino : Headers and libraries for building apps that use libinotifytools 名称和简介匹配 only,使用“search all”试试。 ┌──[root@liruilongs.gi]-[/mysql] └─$ yum -y install inotify-tools ┌──[root@liruilongs.gi]-[/mysql] └─$ rpm -qal inotify-tools /usr/bin/inotifywait /usr/bin/inotifywatch /usr/lib64 /usr/lib64.4.1 /usr/share/doc /usr/share/doc/AUTHORS /usr/share/doc/COPYING /usr/share/doc/ChangeLog /usr/share/doc/NEWS /usr/share/doc/README /usr/share/man/man1 /usr/share/man/man1

差异备份【inotify+rsync】

进行模拟差异备份

┌──[root@liruilongs.gi]-[~] └─$ mkdir rsync;cd rsync ┌──[root@liruilongs.gi]-[~/rsync] └─$ vim i ┌──[root@liruilongs.gi]-[~/rsync] └─$ mkdir /root/liruilong ┌──[root@liruilongs.gi]-[~/rsync] └─$ sh i & [1] 17575 ┌──[root@liruilongs.gi]-[~/rsync] └─$ cd /root/liruilong/ ┌──[root@liruilongs.gi]-[~/liruilong] └─$ ls ┌──[root@liruilongs.gi]-[~/liruilong] └─$ cd /var/www/html/ ┌──[root@liruilongs.gi]-[/var/www/html] └─$ echo "123456" > liruilong.txt ┌──[root@liruilongs.gi]-[/var/www/html] └─$ cat liruilong.txt 123456 ┌──[root@liruilongs.gi]-[/var/www/html] └─$ cd /root/liruilong/ ┌──[root@liruilongs.gi]-[~/liruilong] └─$ ls liruilong.txt ┌──[root@liruilongs.gi]-[~/liruilong] └─$ cat liruilong.txt 123456 ┌──[root@liruilongs.gi]-[~/liruilong] └─$ jobs [1]+ 运行中 sh i &(工作目录:~/rsync) ┌──[root@liruilongs.gi]-[~/liruilong] └─$

备份脚本

┌──[root@liruilongs.gi]-[~/rsync] └─$ ls i ┌──[root@liruilongs.gi]-[~/rsync] └─$ cat i #!/bin/bash ##from_dir 为要被同步的目录 from_dir="/var/www/html/" ##将$from_dir下的内容,同步到本机的/root/liruilong/目录下 rsync_cmd="rsync -az --delete $from_dir root@192.168.26.55:/root/liruilong" ##inotifywait监听 $from_dir 目录,目录下发生文件的变化时,执行同步操作,脚本后台运行 while inotifywait -rqq -e modify,move,create,delete,attrib $from_dir do $rsync_cmd done ┌──[root@liruilongs.gi]-[~/rsync] └─$

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“linux下如何备份文件,Linux如何备份,linux如何备份文件命令,linux备份文件”边界阅读