Linux(CentOS/Armbian)备份

1 基础篇

需要排除

dev  media  mnt  proc run  sys  tmp  ddbr  lost+found  data
cd /data/
tar cvpzf backup.tgz  --exclude=/dev --exclude=/media  --exclude=/mnt --exclude=/proc  --exclude=/run --exclude=/sys --exclude=/tmp --exclude=/ddbr --exclude=/lost+found --exclude=/backup.tgz  exclude=/data  --warning=no-file-changed /

tar  Jcvpf  Archlinux-for-mainline-uboot.tar.xz  --warning=no-file-changed /mnt/

cd /
tar Jcpf - mnt | pv -s $(($(du -sk mnt  | awk '{print $1}')* 1024)) | gzip > /data/ArchLinux/Archlinux-for-mainline-uboot.tar.gz
image.png

还原

tar xvpfz backup.tgz -C /

2 进阶篇

为了显示进度 可以用如下备份和恢复脚本
backup.sh

#!/bin/bash
systemctl stop docker.socket docker
DIR_Backup=/mnt
dir_exclude="dev media mnt proc run sys lost+found ddbr tmp"
cd /
COPY_SRC=`ls`
echo "==============================================================="
echo "All files here:"
echo ${COPY_SRC}
echo "==============================================================="
echo 'Files below will be excluded:'
echo ${dir_exclude} 
echo "==============================================================="
for src in ${COPY_SRC}; do
    if [[ ! "${dir_exclude[@]}"  =~ "${src}" ]]; then
        echo "backup [ ${src} ] ..."
        tar -cpf - ${src} | pv -s $(($(du -sk ${src} | awk '{print $1}')* 1024)) | gzip > ${DIR_Backup}/${src}.tar.gz
    fi
done

执行效果如图


image.png

restore.sh

#!/bin/bash
DIR_Backup=/mnt
DIR_install=/
cd ${DIR_Backup}
COPY_SRC=`ls`
echo ${COPY_SRC}
cd  ${DIR_install}
for src in ${COPY_SRC}; do
    echo "restore [ ${src} ] ..."
    pv  ${DIR_Backup}/${src} | tar -zxpf -
done
mkdir -p ${DIR_INSTALL}/{boot/,dev/,media/,mnt/,proc/,run/,sys/} && sync

远程实时备份恢复

rsync是实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息,该软件是通过ssh协议来传输文件。
rsync 命令的基本格式有多种,分别是:

[root@localhost ~]# rsync [OPTION] SRC DEST
[root@localhost ~]# rsync [OPTION] SRC [USER@]HOST:DEST
[root@localhost ~]# rsync [OPTION] [USER@]HOST:SRC DEST
[root@localhost ~]# rsync [OPTION] [USER@]HOST::SRC DEST
[root@localhost ~]# rsync [OPTION] SRC [USER@]HOST::DEST

从/目录备份文件到/backup/snapshots/data下,同时不备份/backup/snapshots/.excludeuser和/backup/snapshots/.exclude目录文件

rsync -avzAXH --ignore-missing-args --exclude-from  /backup/snapshots/.exclude  --exclude-from /backup/snapshots/.excludeuser /    /backup/snapshots/data

从/backup/snapshots/data目录中恢复文件到/目录下

rsync -avzAXH --delete --exclude /data --exclude-from /backup/snapshots/.excludeuser /backup/snapshots/data /

参照链接:https://blog.csdn.net/Luckiers/article/details/119217775

rsync -a --include={需要的文件目录} --exclude=* /path/to/dir /path/to
比如加n先测试

rsync -avn --delete --exclude={"usr","var","etc","boot","dev"}  /media/  /mnt/test/

去n执行

rsync -av --delete --exclude={"dev", "media",  "mnt",  "proc", "run" ,"sys",  "tmp",  "ddbr", "lost+found", "data"}  /media/  /

仅提取内核

cd /
tar -cpf - boot | pv -s $(($(du -sk boot | awk '{print $1}')* 1024)) | gzip > /root/boot.tar.gz
cd /usr/lib
tar -cpf - firmware | pv -s $(($(du -sk firmware | awk '{print $1}')* 1024)) | gzip >  /root/firmware.tar.gz
tar -cpf - modules | pv -s $(($(du -sk modules | awk '{print $1}')* 1024)) | gzip > /root/modules.tar.gz
cd /usr
tar -cpf - src | pv -s $(($(du -sk src | awk '{print $1}')* 1024)) | gzip > /root/src.tar.gz
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容