在Linux上挂载Windows共享目录

启用 SMB,重启

创建共享目录

比如,我要创建C:\Users\xiao\backup这个目录作为共享目录

  1. 首先创建这个文件夹

  1. 右击属性,点击共享选项卡,选择用户,点击共享按钮。

  1. 点击高级共享,勾选共享此文件夹,设置共享名。点击权限,

  1. 点击权限,点击添加,输入Windows 登陆用户名,点击检查名称,点击确定

  1. 选择添加用户,勾选权限,点击确定,剩下的都点确定。

  1. 网络中检查是否可以成功访问共享目录,确保可以正常访问并增删文件。

在 Linux 上挂载共享目录

# mount -t cifs -o username=Windows登陆名,password=Windows登陆密码 //Windows设备IP/共享目录名称 本地挂载路径
mount -t cifs -o username=xiao,password=xiao //145.16.40.145/backup /home/data/mysql_backup/145.16.40.145

# 向/home/data/mysql_backup/目录中添加文件,看看Windows共享目录中是否能够接收到
touch /home/data/mysql_backup/145.16.40.145/test.txt
#!/bin/bash

# rsync默认参数
default_args=""
# 同步源目录
source_dir="/home/data/"
# 同步目标目录
target_dir="/data/"
# 拥有访问共享目录权限的windows用户名
windows_user="xiao"
# 拥有访问共享目录权限的windows密码
windows_pass="xiao"
# 共享目录路径
windows_path="//145.16.40.148/data"
# 同步方式 rsync / cp
sync_type="cp"

/usr/bin/inotifywait -mrq --format '%Xe %w%f' -e create,delete,modify,attrib,close_write,move ${source_dir} | while read info
do
ls ${target_dir} > /dev/null
# 如果目录可以访问
if [ $? -eq 0 ];then
event=$(echo $info | awk '{print $1}')
file=$(echo $info | awk '{print $2}')
filename=${file##*/}
file_dir=$(dirname ${file})"/"
echo ${event} : ${file}
target_file_dir=${target_dir}${file_dir#*${source_dir}}
target_file_path=${target_file_dir}/${filename}
echo source_file_dir: ${file_dir}
echo target_file_dir: ${target_file_dir}

case $event in
MODIFY|CREATE|CLOSE_WRITE|MOVED_TO)
if [ "${sync_type}" == "cp" ];then
echo "copy ${filename} to ${target_file_dir}"
cp -f ${file} ${target_file_path}
elif ["${sync_type}" == "rsync" ];then
rsync -avzhc ${default_args} ${file_dir} ${target_file_dir}
fi
;;
DELETE|MOVED_FROM)
if [ "${sync_type}" == "cp" ];then
echo "delete ${target_file_path}"
ls ${target_file_path} > /dev/null && mv ${target_file_path} ${target_file_path}~
elif ["${sync_type}" == "rsync" ];then
rsync -avzhb --delete ${default_args} ${target_dir} ${target_file_dir}
fi
;;
ATTRIB)
if [ ! -d "$file" ]; then
if [ "${sync_type}" == "cp" ];then
echo "copy ${filename} to ${target_file_dir}"
cp -f ${file} ${target_file_path}
elif ["${sync_type}" == "rsync" ];then
rsync -avzh ${default_args} ${file_dir} ${target_file_dir}
fi
fi
;;
esac
else
# 重新挂载试试
umount ${target_dir}
mount -t cifs -o username=${windows_user},password=${windows_pass} ${windows_path} ${target_dir}
fi

done