轻量化备份linux系统的文件(列表) 使用的命令

find / -exec ls -ld --time-style=long-iso {} + > "file_list_all_$(date +%Y%m%d_%H%M%S).txt"

ncdu

 

 

打包SRC目录下所有小于1MB的文件,并给大于1MB的文件留个占位文件。

#!/bin/bash
SRC="/root"                          # 源目录
OUT="small_or_placeholder_$(date +%Y%m%d_%H%M%S).tar.gz"
LIMIT=$((1024 * 1024))                      # 1MB
STAGING=$(mktemp -d)# 处理所有普通文件(含隐藏文件)
find "$SRC" -type f -print0 | while IFS= read -r -d '' f; do# 去掉 SRC 前缀,得到相对路径(如 /root/data/a.txt -> data/a.txt)rel="${f#"$SRC"/}"# 获取文件大小(字节)size=$(stat -c%s "$f")# 在临时目录中创建对应的父目录结构mkdir -p "$STAGING/$(dirname "$rel")"if [ "$size" -le "$LIMIT" ]; then# 小文件:保留权限/时间等属性,原样复制到临时目录cp -a -- "$f" "$STAGING/$rel"else# 同名 + 后缀,内容里记下原大小,方便对照printf 'PLACEHOLDER\noriginal_path=%s\noriginal_size=%s\n' "$rel" "$size" \> "$STAGING/${rel}.placeholder"fi
done# 可选:保留空目录
find "$SRC" -type d -empty -print0 | while IFS= read -r -d '' d; domkdir -p "$STAGING/${d#"$SRC"/}"
donetar -czf "$OUT" -C "$STAGING" .
rm -rf "$STAGING"
echo "done: $OUT"