Linux tar + 网站备份的小手册

一、基本压缩与解压

1. 压缩(不包含目录结构、不显示过程信息)

tar -czf archive.tar -C /path/to/files .

说明:

  • -c:创建新 tar 包
  • -z:使用 gzip 压缩
  • -f:指定文件名
  • -C:切换目录后再执行压缩
  • . :表示压缩该目录下所有内容,但不包含目录本身

2. 解压到指定目录(不显示信息)

tar -xzf archive.tar -C /destination/path

二、网站备份示例

1. Cloudreve 网站数据备份

压缩:

tar czvf cloudreve-$(date +%Y%m%d).tar.gz /root/cloudreve

解压:

tar -xzvf cloudreve.tar.gz

2. NPM(Nginx Proxy Manager)网站数据备份

压缩:

tar czvf npm-noth-$(date +%Y%m%d).tar.gz /root/docker/npm

解压:

tar -xzvf npm-noth.tar.gz

三、删除 7 天前的备份数据

find /data/backup -name "*.tar.gz" -type f -mtime +6 -exec rm -f {} \;

说明:

  • -mtime +6:修改时间超过 6 天(也就是保留最近 7 天)

四、解压到指定目录

tar -zxvf cloudreve-$(date +%Y%m%d).tar.gz -C /root/cloudreve

五、打包不包含父目录(常用三种方法)

有时我们希望只打包目录内部的内容,而不是把整个目录包含进去,可以用以下方式:


方法 1:使用 -C 切换目录

tar -zcvf cloudreve.tar.gz -C /root/docker cloudreve

说明: cloudreve 是目录名,压缩包内会包含 cloudreve 目录,但不会包含 /root/docker


方法 2:切换到目标目录并打包其内容

tar -zcvf cloudreve.tar.gz -C /root/docker/cloudreve .

说明: . 表示 cloudreve 目录下的所有内容,而不包含目录本身。


方法 3:进入目录后再压缩

cd /root/docker/cloudreve
tar -zcvf cloudreve.tar.gz *

说明: 只会打包目录中的所有文件,不包含目录名称。