轻量化备份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; do
  mkdir -p "$STAGING/${d#"$SRC"/}"
done

tar -czf "$OUT" -C "$STAGING" .
rm -rf "$STAGING"
echo "done: $OUT"

 

posted @ 2026-08-03 01:35  hrdom  阅读(2)  评论(0)    收藏  举报