当前位置: 首页 > news >正文

Linux 备份与恢复常用命令


在 Linux 系统运维中,备份与恢复是保障数据安全的核心环节 —— 无论是日常文件误删、配置文件篡改,还是系统崩溃,可靠的备份策略和熟练的命令使用都能快速恢复数据。本文按「文件 / 目录备份」「压缩备份」「系统级备份」「增量 / 差异备份」四大核心场景,整理常用命令及实操示例,兼顾基础用法与进阶技巧。

一、文件 / 目录备份:基础命令(cp、rsync)

适用于日常单个文件、目录的完整备份,操作简单,适合小体量数据或关键配置文件(如 /etc/home 下的用户数据)。

1. cp:最基础的复制备份

cp(copy)是 Linux 自带的文件复制命令,可直接实现「源文件→备份文件」的一对一备份,支持目录递归复制。

核心语法
cp [选项] 源路径 目标路径
常用选项与示例
选项作用示例
-r递归复制目录(必选,否则无法复制目录)备份 /data 目录到 /backup 下,命名为 data_bakcp -r /data /backup/data_bak
-p保留源文件的权限、修改时间、所有者(避免备份后权限失效)备份 /etc/nginx/nginx.conf 到 /backup,保留权限:cp -p /etc/nginx/nginx.conf /backup/nginx.conf_bak
-a等同于 -dR --preserve=all,保留所有属性(包括符号链接),适合完整备份备份 /home/user 目录(含符号链接)到 /backupcp -a /home/user /backup/user_bak
时间戳命名避免覆盖旧备份(用 $(date +%F_%H%M%S) 生成时间戳)每日备份 /data,文件名带日期(如 data_20240520_1430):cp -r /data /backup/data_$(date +%F_%H%M%S)
恢复示例

若 /data 目录误删,从备份恢复:

cp -r /backup/data_bak /data  # 覆盖目标路径(需确认目标路径已清空或允许覆盖)

2. rsync:高效同步备份(推荐)

rsync 是比 cp 更强大的工具 —— 支持「增量同步」(仅备份变化的文件)、远程同步(跨服务器备份),且占用带宽低、支持排除指定文件,适合频繁备份或大规模数据。

核心语法
rsync [选项] 源路径 目标路径  # 本地同步
rsync [选项] 源路径 用户名@远程IP:目标路径  # 本地→远程同步
rsync [选项] 用户名@远程IP:源路径 目标路径  # 远程→本地同步(恢复)
常用选项与示例
选项作用示例
-a归档模式(递归 + 保留权限 / 时间 / 所有者,等同于 -rlptgoD),必选本地同步 /data 到 /backup/data_rsyncrsync -a /data /backup/data_rsync
-v显示同步过程(verbose),方便排查问题同步时显示文件列表:rsync -av /data /backup/data_rsync
-z压缩传输(适合远程同步,减少网络带宽占用)本地同步到远程服务器(192.168.1.100):rsync -avz /data root@192.168.1.100:/backup
--delete让目标目录与源目录完全一致(删除目标目录中源目录没有的文件),适合镜像备份同步 /data 并删除备份中多余的文件:rsync -av --delete /data /backup/data_rsync
--exclude排除不需要备份的文件 / 目录(支持通配符)备份 /data 但排除 .log 日志文件和 tmp 目录:rsync -av --exclude="*.log" --exclude="tmp" /data /backup
恢复示例(远程→本地)

若本地 /data 损坏,从远程服务器(192.168.1.100)的备份恢复:

rsync -avz root@192.168.1.100:/backup/data_rsync /data

二、压缩备份:节省空间(tar、zip/unzip)

直接备份文件会占用大量磁盘空间,通常会结合压缩工具(如 tarzip)将备份打包压缩,常用格式有 tar.gz(gzip 压缩,最常用)、tar.bz2(bzip2 压缩,压缩率更高)、zip(跨平台,Windows 也可解压)。

1. tar:Linux 标配打包压缩工具

tar 本身是「打包」工具(将多个文件 / 目录打包成一个 .tar 文件),结合 -z(gzip)、-j(bzip2)、-J(xz)选项可实现「打包 + 压缩」,对应的解压选项为 -x

核心语法(备份:打包 + 压缩)
tar [压缩选项] -cvf 压缩包名称.tar.xxx 源文件/目录
# 选项说明:
# -c:创建压缩包(create)
# -v:显示打包过程
# -f:指定压缩包名称(必须放在所有选项最后)
# 压缩选项:-z(.tar.gz)、-j(.tar.bz2)、-J(.tar.xz)
核心语法(恢复:解压)
tar [压缩选项] -xvf 压缩包名称.tar.xxx -C 目标目录
# -x:解压(extract)
# -C:指定解压到的目标目录(不指定则解压到当前目录)
常用示例
场景备份命令(打包 + 压缩)恢复命令(解压)
备份 /etc 目录为 etc_backup.tar.gz(gzip 压缩,最常用)tar -zcvf /backup/etc_backup.tar.gz /etc解压到 /tmp 目录:tar -zxvf /backup/etc_backup.tar.gz -C /tmp
备份 /home 目录为 home_backup.tar.bz2(bzip2 压缩,压缩率更高)tar -jcvf /backup/home_backup.tar.bz2 /home直接解压到当前目录:tar -jxvf /backup/home_backup.tar.bz2
备份多个文件(如 file1.txtfile2.logdir1)为 data.tar.xz(xz 压缩,压缩率最高)tar -Jcvf /backup/data.tar.xz file1.txt file2.log dir1解压到 /data/restoretar -Jxvf /backup/data.tar.xz -C /data/restore
关键技巧:查看压缩包内容(无需解压)
tar -ztvf /backup/etc_backup.tar.gz  # 查看 .tar.gz 包内文件
tar -jtvf /backup/home_backup.tar.bz2  # 查看 .tar.bz2 包内文件

2. zip/unzip:跨平台压缩工具

zip 支持将文件 / 目录压缩为 .zip 格式(Windows 和 Linux 均可解压),unzip 用于解压 .zip 文件,需先安装(Debian/Ubuntu:apt install zip unzip;CentOS/RHEL:yum install zip unzip)。

备份命令(zip)
zip [选项] 压缩包名称.zip 源文件/目录
# 常用选项:-r(递归压缩目录)、-q(静默压缩,不显示过程)、-9(最高压缩率)
恢复命令(unzip)
unzip [选项] 压缩包名称.zip -d 目标目录
# 常用选项:-l(查看压缩包内容)、-o(覆盖现有文件,无需确认)
示例
  • 备份 /data 目录为 data_backup.zip(递归压缩,最高压缩率):

    bash

    zip -r9 /backup/data_backup.zip /data
    
  • 解压 data_backup.zip 到 /tmp/restore,覆盖现有文件:

    bash

    unzip -o /backup/data_backup.zip -d /tmp/restore
    
  • 查看压缩包内文件,不解压:

    bash

    unzip -l /backup/data_backup.zip
    

三、系统级备份:分区 / 磁盘备份(dd)

dd 是 Linux 下的「磁盘复制」命令,可直接备份整个分区(如 /dev/sda1)或整个磁盘(如 /dev/sda),生成镜像文件,适合系统崩溃后的完整恢复(需谨慎使用,操作不当会覆盖数据)。

核心语法

dd if=源设备/文件 of=目标文件/设备 bs=块大小 count=块数
# 选项说明:
# if(input file):源(分区/磁盘/文件)
# of(output file):目标(镜像文件/分区/磁盘)
# bs(block size):每次读写的块大小(如 4M,越大速度越快)
# count:读取的块数(不指定则复制整个源)

常用示例

1. 备份分区(如 /dev/sda1,系统 boot 分区)
# 备份 /dev/sda1 到 /backup/sda1_backup.img(块大小 4M)
dd if=/dev/sda1 of=/backup/sda1_backup.img bs=4M
2. 恢复分区(从镜像恢复到 /dev/sda1

⚠️ 警告:恢复前需确保目标分区已卸载(或进入救援模式),否则会损坏数据!

# 从镜像恢复到 /dev/sda1
dd if=/backup/sda1_backup.img of=/dev/sda1 bs=4M
3. 备份整个磁盘(如 /dev/sda,包含所有分区)
# 备份 /dev/sda 到 /backup/sda_full_backup.img(适合全盘恢复)
dd if=/dev/sda of=/backup/sda_full_backup.img bs=4M
4. 关键技巧:压缩磁盘镜像(节省空间)

dd 备份的镜像文件体积与源分区 / 磁盘一致,可结合 gzip 压缩:

# 备份并压缩 /dev/sda1
dd if=/dev/sda1 bs=4M | gzip -c > /backup/sda1_backup.img.gz# 恢复压缩的镜像
gzip -dc /backup/sda1_backup.img.gz | dd of=/dev/sda1 bs=4M

四、增量 / 差异备份:高效备份(rsync、tar)

全量备份(每次备份所有数据)耗时且占用空间,增量备份(仅备份上次备份后变化的数据)和差异备份(仅备份上次全量备份后变化的数据)更高效,适合大规模数据或高频备份场景。

1. rsync 实现增量备份(推荐)

利用 rsync 的 --link-dest 选项创建「硬链接快照」,每次备份仅存储变化的文件,旧文件通过硬链接指向历史备份,既节省空间,又可保留完整的历史版本。

示例:每日增量备份 /data
# 1. 定义备份目录和日期格式
BACKUP_DIR="/backup/data_incremental"
DATE=$(date +%F)
# 2. 第一次备份(全量,创建基础目录)
if [ ! -d "$BACKUP_DIR/latest" ]; thenrsync -av --delete /data "$BACKUP_DIR/latest"
fi
# 3. 后续增量备份(基于 latest 创建当日快照,仅变化文件新存储)
rsync -av --delete --link-dest="$BACKUP_DIR/latest" /data "$BACKUP_DIR/$DATE"
# 4. 更新 latest 为当日快照(下次增量基于当日)
rm -rf "$BACKUP_DIR/latest"
ln -s "$BACKUP_DIR/$DATE" "$BACKUP_DIR/latest"

效果:每日备份仅占用变化文件的空间,/backup/data_incremental/2024052020240521 等目录均为完整的备份版本,可直接恢复任意日期的数据。

2. tar 实现增量备份

tar 通过 -g 选项生成「快照文件」(记录备份状态),下次备份基于快照文件仅打包变化的文件。

示例:全量备份 + 增量备份
# 1. 全量备份(生成快照文件 /backup/data_snapshot.snar)
tar -zcvf /backup/data_full_$(date +%F).tar.gz -g /backup/data_snapshot.snar /data# 2. 1天后增量备份(基于快照文件,仅备份变化的文件)
tar -zcvf /backup/data_incr_$(date +%F).tar.gz -g /backup/data_snapshot.snar /data
恢复方式:先恢复全量,再恢复增量
# 1. 恢复全量备份
tar -zxvf /backup/data_full_20240520.tar.gz -C /data/restore
# 2. 恢复增量备份(覆盖全量备份中的变化文件)
tar -zxvf /backup/data_incr_20240521.tar.gz -C /data/restore

五、备份与恢复注意事项

  1. 备份前验证源数据:确保源文件 / 目录可访问(权限足够),避免备份空数据或损坏数据。
  2. 备份后校验完整性:用 md5sum 或 sha256sum 生成备份文件的校验值,恢复前验证:
    # 备份时生成校验值
    md5sum /backup/etc_backup.tar.gz > /backup/etc_backup.md5
    # 恢复前验证
    md5sum -c /backup/etc_backup.md5
    
  3. 远程备份注意权限:用 rsync 远程备份时,确保远程服务器开启 ssh 服务,且本地用户有远程目录的写入权限(建议用密钥登录,避免密码泄露)。
  4. 系统级备份需离线:用 dd 备份分区 / 磁盘时,建议进入「单用户模式」或使用 Live CD(如 CentOS 救援模式),避免文件被占用导致备份损坏。
  5. 定期测试恢复流程:备份后定期模拟恢复(如恢复到测试环境),确保备份文件可用,避免真正需要时发现备份无效。

六、常用命令速查表

场景命令示例
复制目录备份cp -ar /data /backup/data_$(date +%F)
本地同步备份rsync -av --delete /data /backup/data_rsync
远程同步备份rsync -avz /data root@192.168.1.100:/backup
打包压缩备份(tar.gz)tar -zcvf /backup/etc_backup.tar.gz /etc
解压恢复(tar.gz)tar -zxvf /backup/etc_backup.tar.gz -C /tmp
分区备份(dd)dd if=/dev/sda1 of=/backup/sda1.img bs=4M
增量备份(rsync)rsync -av --link-dest=/backup/latest /data /backup/$(date +%F)
校验备份完整性md5sum -c /backup/etc_backup.md5

通过上述命令,可覆盖 Linux 从文件级到系统级的备份与恢复需求,结合定期备份策略(如 crontab 定时执行备份脚本),能最大程度保障数据安全。

http://www.dtcms.com/a/416289.html

相关文章:

  • 抚顺 网站建设文创产品设计理念
  • 乐之网站制作国家公示信息查询系统
  • 帝国cms 网站地图 xml手表之家
  • 【开题答辩全过程】以 spb+地铁安防管理系统的设计与实现为例,包含答辩的问题和答案
  • 软件工程实践第一次作业
  • 没网站怎么做app婚礼顾问网站介绍模版
  • 宣传类网站做企业网站怎样做
  • 百度上如何创建自己的网站有哪些下载软件的应用
  • Jetson Xavier NX踩坑
  • 建筑培训学校珠海网站推广优化
  • 南京网站开发个人wordpress模板在哪
  • 2025_TypeScript
  • 建立网站建设考核激励制度英文网站模板cms
  • 离线网页,选择文件,批量计算MD5(版本V2)
  • github下载量统计 - GithubReleaseStats.exe(Wrtie by Qt)
  • 【从零构建LLM】第二章,embeddbing构建思路总结
  • 如何选网站空间搬瓦工建设wordpress
  • 黑龙江省城乡和住房建设厅网站网站关键字 怎么设置
  • 做网站需要什么开发语言用阿里云服务器搭建wordpress
  • 网站的子域名服饰技术支持 东莞网站建设
  • 自助建站系统官方版网站建设广州哪家好
  • 9月27日星期六今日早报简报微语报早读
  • 网站后台模板安装显示不了网站服务器怎么配
  • 交互设计要学什么seo的排名机制
  • 企业网站如何做排名网站页面太多是否做静态
  • 自己做的微信网站经常被停止访问马鞍山做网站的公司
  • 沧州网站制作的流程php网站后台密码忘记
  • 珠海制作公司网站wordpress 文章不显示没有图片
  • 网站开发安全小贴士wordpress 4.2.2
  • 网站必须备案wordpress做网盘资源