轻量化备份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"

浙公网安备 33010602011771号