使用硬链接实现增量备份

admin 2025年4月23日01:55:23评论10 views字数 1549阅读5分9秒阅读模式
当使用 cp -l 拷贝文件时并不会进行物理拷贝,而是为目标文件创建了一个硬链接。这样做的好处是进行多次备份时,不会浪费空间,只有变化的部分才会实际占用空间。
通过硬链接创建的文件它们的 inode 相同,可以使用 find 查找 inode 相同的文件:
find / -xdev -samefile tmp
使用硬链接实现增量备份
示例中通过 stat 查看 tmp 文件属性,tmp 文件有8个硬链接。通过 find 查找 inode 相同的文件,-xdev 限定不跨 mount,在当前文件系统下进行搜索。最终在各个备份目录中找到相同 inode 的文件。硬链接不能跨文件系统,只能在同一个文件系统下创建。
下面是基于硬链接的备份脚本:
cat /root/backup.sh#!/bin/bash# 配置源目录和备份根目录src_dir="/data"      # 替换为实际源目录backup_dir="/it/backups"  # 替换为实际备份目录# 生成时间戳 (格式: 年月日_时分秒)timestamp=$(date +"%Y%m%d_%H%M%S")current_backup="${backup_dir}/${timestamp}"# 校验源目录是否存在if [ ! -d "$src_dir" ]; then    echo "错误:源目录 $src_dir 不存在"    exit 1fi# 创建备份目录if ! mkdir -p "$current_backup"then    echo "错误:无法创建备份目录 $current_backup"    exit 1fi# 执行硬链接拷贝(保留属性)cp -al "${src_dir}/." "$current_backup" 2>/dev/null# 检查拷贝结果if [ $? -eq 0 ]; then    echo "备份成功创建于:$current_backup"else    echo "错误:备份创建失败"    rm -rf "$current_backup"  # 清理失败目录    exit 1fi
执行了多次备份,在每次备份时模拟源目录 /data 发生变动。通过 du 查看备份结果:
使用硬链接实现增量备份
测试源目录被删,看目标备份文件是否会丢失。硬链接的属性决定了只要所有inode相同的文件不被删完,文件就不会丢失。它们在硬盘上实际只存了一份,但在不同目录保留了多个“副本”。
通过不同时间戳目录可以保留不同备份时间点的版本,硬链接可以减少磁盘空间的浪费。传统备份,每个全备副本都需要占用一份空间。使用硬链接可以达到增量备份的效果。只有发生变动的部分才占用空间,没变化的部分不占用空间。

硬链接限制:

  • 不支持跨文件系统操作

  • 无法链接目录(自动转为普通拷贝)

  • 修改任意备份中的文件会影响所有链接版本

硬链接的限制决定了它不能直接用于备份生产环境,必须先通过 rsync 同步到备份目录后再通过硬链接备份。原因是修改inode相同的文件会导致备份文件全都被替换。经过普通 cp 或 rsync 同步后的文件与原文件已经不是同一个文件。对备份目录执行硬链接拷贝不会导致修改文件出现副作用。能使用硬链接 cp -l 拷贝原生产目录,必须作用于备份目录。

硬链接使用场景:

  1. 使用 rsync 将生产环境同步到一级备份目录 /data

  2. 使用 backup.sh 将一级备份目录 /data 目录通过硬链接备份到二级备份目录 /backups 目录

实际演示

1. 通过 rsync 备份生产目录

使用硬链接实现增量备份

2. 通过 backup.sh 创建硬链接备份

使用硬链接实现增量备份

rsync 只能实现全量备份,无法保留多个版本。硬链接可以备份多个版本,同时又保留了“增量”的特性。数据量不会激增,备份空间不会因多次备份开始膨胀。使用 rsync + 硬链接的组合可以达到全量+增量的备份模式。

全文完。

原文始发于微信公众号(生有可恋):使用硬链接实现增量备份

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月23日01:55:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用硬链接实现增量备份https://cn-sec.com/archives/3967803.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息