Linux 压缩 save 文件夹 为同名压缩文件

一条命令即可把当前目录下的 save 文件夹压成 save.tar.gz(文件名与文件夹同名,方便后面下载):

tar -czf save.tar.gz save/

tar 本身没有“快照”功能,它只能“当时目录里有什么就压什么”,而且一旦扫描完文件列表,后面再新建、再删除它都会继续报 “file removed before we read it” 或 “file changed”。
所以靠一条 tar 命令不可能“只压开始那一刻的文件”,必须先把目录“定格”,再让 tar 去压定格后的那份数据

# 1. 建一个空目录当快照点
mkdir save_snap


# 2. 用 cp -al 做硬链接副本(秒级完成,不占额外磁盘,除了 inode 几乎 0 空间)
cp -al save/* save_snap/ 2>/dev/null   # 2>/dev/null 忽略“已删除”报错


# 3. 压这份静态快照
tar -czf save.tar.gz -C save_snap .


# 4. 清理快照
rm -rf save_snap
  • 原理:cp -al 只是给相同数据块多建一个目录入口,原目录继续删改都不影响快照里的硬链接文件。

  • 空间:只有被后续覆盖写入的文件才会真正多占一份空间,普通删除不会多占。

  • 时间:几十万张小图也能在几秒内完成“复制”。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值