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