Linux NFS文件夹同步脚本
#!/bin/bash
# NFS 同步脚本:挂载NFS并同步文件夹(添加/删除内容)
# 作者:Aux
# 注意:替换变量值,并在测试环境验证。
set -e # 任何命令失败时退出脚本
# 定义变量(根据您的环境修改)
NFS_SERVER="" # NFS服务器IP,例如您的PVE服务器IP
NFS_PATH="" # NFS共享路径
LOCAL_MOUNT="" # 本地挂载点目录
SOURCE_DIR="" # 源文件夹(本地)
TARGET_DIR="${LOCAL_MOUNT}" # 目标文件夹(在NFS挂载点内)
LOG_FILE="/var/log/nfs_sync.log" # 日志文件路径
# 检查挂载点是否存在,如不存在则创建
if [ ! -d "$LOCAL_MOUNT" ]; then
sudo mkdir -p "$LOCAL_MOUNT"
echo "创建挂载点目录: $LOCAL_MOUNT" | sudo tee -a "$LOG_FILE"
fi
# 挂载NFS共享
echo "开始挂载NFS共享..." | sudo tee -a "$LOG_FILE"
if ! sudo mount -t nfs "${NFS_SERVER}:${NFS_PATH}" "$LOCAL_MOUNT"; then
echo "错误:挂载NFS失败!请检查网络或权限。退出脚本。" | sudo tee -a "$LOG_FILE"
exit 1
fi
echo "NFS挂载成功:${NFS_SERVER}:${NFS_PATH} -> $LOCAL_MOUNT" | sudo tee -a "$LOG_FILE"
# 同步文件夹(添加和删除内容)
echo "开始同步文件夹:$SOURCE_DIR -> $TARGET_DIR" | sudo tee -a "$LOG_FILE"
#sudo rsync -av --dry-run --delete "$SOURCE_DIR/" "$TARGET_DIR/" | sudo tee -a "$LOG_FILE"
rsync -av --delete "$SOURCE_DIR/" "$TARGET_DIR/" | sudo tee -a "$LOG_FILE"
if [ $? -eq 0 ]; then
echo "同步成功完成!" | sudo tee -a "$LOG_FILE"
else
echo "警告:同步过程中出错。请检查日志。" | sudo tee -a "$LOG_FILE"
fi
# 卸载NFS共享
echo "卸载NFS共享..." | sudo tee -a "$LOG_FILE"
if sudo umount "$LOCAL_MOUNT"; then
echo "NFS卸载成功。" | sudo tee -a "$LOG_FILE"
else
echo "警告:卸载失败。请手动检查:umount $LOCAL_MOUNT" | sudo tee -a "$LOG_FILE"
fi
# echo "脚本执行结束。详细日志见:$LOG_FILE"