Linux大文件复制脚本

58 阅读1分钟
#!/bin/bash

# 检查参数数量是否正确
if [ "$#" -ne 2 ]; then
  echo "用法: $0 <源文件> <目标目录>"
  exit 1
fi

# 获取参数
SOURCE_FILE="$1"  # 第一个参数:源文件路径
TARGET_DIR="$2"   # 第二个参数:目标目录路径

# 检查源文件是否存在
if [ ! -f "$SOURCE_FILE" ]; then
  echo "错误: 源文件 $SOURCE_FILE 不存在!"
  exit 1
fi

# 创建目标目录(如果不存在)
mkdir -p "$TARGET_DIR"

# 循环复制 30 份文件
for i in {1..30}
do
  TARGET_FILE="$TARGET_DIR/$(basename "$SOURCE_FILE")_copy_$i"
  echo "正在复制第 $i 份文件到 $TARGET_FILE ..."
  
  # 使用 rsync 复制文件(保留文件属性)
  rsync -ah --progress "$SOURCE_FILE" "$TARGET_FILE"
  
  # 检查是否复制成功
  if [ $? -eq 0 ]; then
    echo "第 $i 份文件复制成功!"
  else
    echo "第 $i 份文件复制失败!"
    exit 1
  fi
done

echo "所有文件复制完成!"

使用 rsync 复制文件

-   `rsync` 支持高效复制大文件,并保留文件属性。
-   `-a`:归档模式,保留文件属性。
-   `-h`:以人类可读的格式显示文件大小。
-   `--progress`:显示复制进度。